一、下载及提取
http://opencv.org/downloads.html
官网上可下载各个版本的OpenCV
下图中的opencv-2.4.10.exe文件是下载完成后的文件,文件夹opencv是提取完成后形成的文件夹。
双击下载完成的.exe文件进行提取:
点击Extract按键后会出现对话框显示进度,这时候只要等待进度条走完即可:
需要注意的是:Opencv提取的过程中有可能出现错误,如下图:
这是.exe文件下载不完整造成的,重新下载即可解决问题。
二、配置
1、步骤一进行完后,需要在高级系统设置中配置系统环境变量。
新建系统变量->添加到Path
a、需要新建的环境变量有两个:
(1)变量名:OPENCV_64
变量值: D:\Programming\OpenCV\opencv\build\x64\vc12\bin
(2)变量名: OPENCV_32
变量值: D:\Programming\OpenCV\opencv\build\x86\vc12\bin
这里需要注意的是:vc版本应与vs的版本对应,以本机为例,使用的是vs2013对应vc12。
这两个路径的来源为:../opencv/build/目录下的x64和x86文件夹,两个文件夹下都有vc12\bin这个目录,这两个用来分别进行32位和64位的编译,对于64为系统来说,最好都配置。
b、新建完成后在Path中追加:
;%OPENCV_32%;%OPENCV_64%
注意:第一个分号一定要有,这是用来将各个目录分隔开用的。
2、在OpenCV项目中添加包含目录/库目录
项目右键->属性->配置属性->VC++目录->包含目录/库目录
包含目录:
D:\Programming\OpenCV\opencv\build\include
D:\Programming\OpenCV\opencv\build\include \opencv
D:\Programming\OpenCV\opencv\build\include \opencv2
库目录:
D:\Programming\OpenCV\opencv\build\x86\vc12\lib
注意:库目录中x64与x86应与工程的编译选项一致,32位下编译就选x86,否则选x64。
3、在项目中添加静态库
项目右键->属性->配置属性->链接器->输入->附加依赖项
opencv_ml2410d.lib
opencv_calib3d2410d.lib
opencv_contrib2410d.lib
opencv_core2410d.lib
opencv_features2d2410d.lib
opencv_flann2410d.lib
opencv_gpu2410d.lib
opencv_highgui2410d.lib
opencv_imgproc2410d.lib
opencv_legacy2410d.lib
opencv_objdetect2410d.lib
opencv_ts2410d.lib
opencv_video2410d.lib
opencv_nonfree2410d.lib
opencv_ocl2410d.lib
opencv_photo2410d.lib
opencv_stitching2410d.lib
opencv_superres2410d.lib
opencv_videostab2410d.lib
注意:添加时要分辨版本是否一致(即电脑上安装的openCV中的lib文件名与上述是否相同,lib文件位置在上一步的库目录下)。另外当程序报错找不到xxx时,可以回到这一步检查包含xxx的lib文件有没有被包含在内,或文件名对不对。
三、测试程序
这是一段从网上找来的程序,用于创建个窗口加载并显示给定路径的图片
//显示图像文件
#include <opencv2/opencv.hpp>
using namespace std;
#pragma comment(linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"")
int main()
{
const char *pstrImageName = "G:\\图片\\IMG_2047.JPG";
const char *pstrWindowsTitle = "OpenCV第一个程序";
//从文件中读取图像
IplImage *pImage = cvLoadImage(pstrImageName, CV_LOAD_IMAGE_UNCHANGED);
//创建窗口
cvNamedWindow(pstrWindowsTitle, CV_WINDOW_AUTOSIZE);
//在指定窗口中显示图像
cvShowImage(pstrWindowsTitle, pImage);
//等待按键事件
cvWaitKey();
cvDestroyWindow(pstrWindowsTitle);
cvReleaseImage(&pImage);
return 0;
}
64位电脑在测试时要分别在63和32位编译条件下编译运行一次。