在上篇文章中,已经自己动手编译了OpenCV库,本篇文章来搭建OpenCV的开发环境。
先来看看下载的OpenCV 2.4.8库和自己编译的库:
基于x64的开发,如果使用官网下载的库,要选择x64的文件夹,在x64文件夹内还有vc10,vc11,vc12 3个文件夹,分别对应vs2010,vs2012,vs2013。下面开始搭建开发环境,首先设置环境变量。
一、设置环境变量
首先新建一个系统变量OpenCV,如果选择使用官网下载的库,路径为C:\OpenCV2.4.8\opencv\build\x64\vc12 ,自己编译的库,路径为:C:\OpenCVLatest\build\vs2013x64\install\x64\vc12。
执行下列命令添加OpenCV系统变量(需要管理员权限):
SETX OpenCV C:\OpenCV2.4.8\opencv\build\x64\vc12 /M
然后,编辑系统变量Path,在最后加上:
%OpenCV%\bin;
为什么不直接在Path的最后加上C:\OpenCV2.4.8\opencv\build\x64\vc12\bin; 还要新建一个OpenCV变量呢,不是多此一举吗?直接添加是可以的,但是添加变量的好处就是如果库的位置发生了变化,只需要修改OpenCV这一个变量的值,其他引用它的地方都不用改。
二、配置VS2013
- 新建vc++ win32的控制台应用程序,命名为HelloOpenCV;
- 在“配置管理器”(生成-->配置管理器)里新建解决方案平台,选择x64;
- 打开“属性管理器”(视图-->其他窗口-->属性管理器),会看到步骤2新建的x64的Debug和Release配置;
- 在Debug|x64上“右击”,选择“添加新项目属性表”,命名为“OpenCV248_X64_Debug”,同样Release|x64的命名为“OpenCV248_X64_Release”;
- 在“OpenCV248_X64_Debug”上右击选择“属性”,在弹出的属性页中,左侧选择“通用属性->VC++目录”,在右侧编辑“包含目录”和“库目录”分别为$(OpenCV)\..\..\include和$(OpenCV)\lib
- 接下来在左侧选择“链接器->输入”,在右侧编辑“附加依赖项”,添加以下值:
opencv_calib3d248d.lib; opencv_contrib248d.lib; opencv_core248d.lib; opencv_features2d248d.lib; opencv_flann248d.lib; opencv_gpu248d.lib; opencv_highgui248d.lib; opencv_imgproc248d.lib; opencv_legacy248d.lib; opencv_ml248d.lib; opencv_nonfree248d.lib; opencv_objdetect248d.lib; opencv_ocl248d.lib; opencv_photo248d.lib; opencv_stitching248d.lib; opencv_superres248d.lib; opencv_ts248d.lib; opencv_video248d.lib; opencv_videostab248d.lib;
- 重复步骤5和6,配置OpenCV248_X64_Release。两者的不同在于Debug的附加依赖性都是结尾带有d.lib的库,d表示Debug,Release的则不带,库的名字可以在$(OpenCV)\lib文件夹中找到。另外,248表示OpenCV的版本号,如果使用的是其他版本的OpenCV,这里要记得修改248为相应的版本号;
opencv_calib3d248.lib; opencv_contrib248.lib; opencv_core248.lib; opencv_features2d248.lib; opencv_flann248.lib; opencv_gpu248.lib; opencv_highgui248.lib; opencv_imgproc248.lib; opencv_legacy248.lib; opencv_ml248.lib; opencv_nonfree248.lib; opencv_objdetect248.lib; opencv_ocl248.lib; opencv_photo248.lib; opencv_stitching248.lib; opencv_superres248.lib; opencv_ts248.lib; opencv_video248.lib; opencv_videostab248.lib;
- 配置完成,在HelloOpenCV项目文件夹中,可以看到刚刚添加的“属性表”,以后在新项目中,只需要打开“属性管理器”,右击添加现有属性表就可以了。
三、简单的Demo
下面写个简单的Demo,看看配置是否可用。
#include <opencv2/opencv.hpp> #include <iostream> using namespace std; using namespace cv; int main(int argc, char **argv) { Mat img = imread("twoboy.jpg"); if (img.empty()) { cout << "打开图像失败!" << endl; return -1; } namedWindow("image", CV_WINDOW_AUTOSIZE); imshow("image", img); waitKey(); return 0; }
运行结果:
注意事项
本篇博文中的第一部分是设置系统环境变量,其中添加了一个OpenCV的变量,这个变量在后面的属性表配置中用到了,引用方式是$(OpenCV),如果按照上面添加了如:目录$(OpenCV)\..\..\include,在写程序的时候提示找不到opencv.hpp文件,那么不妨重启一下你的VS2013吧!
请问你运行的结果有没有 已加载“D:\download\opencv2.4.9\opencv\build\x86\vc12\bin\opencv_core249.dll”。无法查找或打开 PDB 文件。
这样的提示,虽然不是错误但这样没法调试。
这个我记不清了,不过要保证编译成dll的opencv源码存在
我的也出现这个: 已加载“C:\Windows\SysWOW64\opencv_core248.dll”。无法查找或打开 PDB 文件。好烦人的错误。请问您解决了吗?
很好,学习了!
不过namedWindow(“image”, CV_WINDOW_AUTOSIZE);这里我的提示CV_WINDOW_AUTOSIZE未定义,看了官方文档,好像是c里面用这个,c++里用的是WINDOW_AUTOSIZE,改回来就可以编译了。
我的是vs2013+opencv3.0.0
编译时出现错误:cannot open input file‘opencv_calib3d300.lib’
我的错误也是这个
在opencv中搜索所有的dll文件,把他们拷贝到你的工程目录下就行。
好,谢谢
嗯 ,可以的