Win 10 + VS 2010下的openCV配置过程
参考:http://johnhany.net/2013/11/environment-for-opencv-with-vs2010/#stdafx.h
1.1 本机配置
Windows 7 旗舰版 x86
Visual Studio 2010 旗舰版
OpenCV 2.4.10
1.2 下载解压OpenCV
可以在官网下载最新版
下载后解压到
D:\software\opencv
1.3设置环境变量
开始->计算机(右击)->属性->高级系统设置->高级->环境变量,在用户变量里增加一项:
变量名:path
变量值:D:\software\opencv\build\x86\vc10\bin
如果已经有path项,在其变量值结尾添加英文分号“;”,再加上上面那个值。
这里的“x86”代表目标程序是32位的,如果要写64位的程序则选择“x64”文件夹。并不是根据开发环境(你的机器)选择的。
后面的“vc10”代表使用Visual C++ 2010开发。
注销用户,重新登录Windows,保证环境变量更新并起作用。
1.4创建并配置工程
打开Visual Studio 2010,新建一个工程,选择Visual C++ ->Win32->Win32 Console Application,命名例如“OpencvTest”,点击确定。
点击 下一步
选择 控制台应用程序 和 预编译头 。点击 完成 。
由于每次新建一个opencv项目都需要重新配置“VC++目录”中的“包含目录”和“库目录”,以及“链接器”中的“附加依赖项”。所以下面用永久性配置opencv环境的方法。
打开上面建好的工程,打开 视图->其他窗口->属性管理器。
展开树形,发现一个“Microsoft.Cpp.Win32.user”的项目:
右击点开 属性
左侧选择“VC++目录”,右侧新增“包含目录”
添加以下三项:
D:\software\opencv\build\include
D:\software\opencv\build\include\opencv
D:\software\opencv\build\include\opencv2
其实只需要填入第一行即可。由于“include\opencv”包含C版本的头文件,“include\opencv2”包含C++版本的头文件。所以编写代码时,在头文件名称前加上“opencv/”或“opencv2/”来区分两种版本。
在“库目录”中增加一项:
E:\softwares\opencv\build\x86\vc10\lib
选择链接器->输入,在附加依赖项中增加:
(2410表示opencv版本号,d表示debug)
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_ml2410d.lib
opencv_objdetect2410d.lib
opencv_ts2410d.lib
opencv_video2410d.lib
其中各个模块的功能可以参考:
http://docs.opencv.org/2.4/modules/core/doc/intro.html
如果需要Release功能,在属性管理器中重复上面的配置。附加依赖项中去掉每项后面的d。
opencv_calib3d2410.lib
opencv_contrib2410.lib
opencv_core2410.lib
opencv_features2d2410.lib
opencv_flann2410.lib
opencv_gpu2410.lib
opencv_highgui2410.lib
opencv_imgproc2410.lib
opencv_legacy2410.lib
opencv_ml2410.lib
opencv_objdetect2410.lib
opencv_ts2410.lib
opencv_video2410.lib
1.5编程测试
#include "stdafx.h"
#include "opencv2/opencv.hpp"
using namespace std;
using namespace cv;
int main(int argc, char* argv[])
{
const char* imagename = "D:\\lena.jpg";
//从文件中读入图像
Mat img = imread(imagename);
//如果读入图像失败
if(img.empty())
{
fprintf(stderr, "Can not load image %s\n", imagename);
return -1;
}
//显示图像
imshow("image", img);
//此函数等待按键,按键盘任意键就返回
waitKey();
return 0;
}
程序结果: