昨天晚上开始配置OpenCV2.4.6 ,一直搞到现在,好麻烦啊。不过在此过程中对环境变量配置和库的使用有了更深一层的理解,下面总结一下配置以供大家参考。
先讲一个最简单的配置方法吧,这样不用重启电脑就能测试一下是否成功:
1. 首先是下载OpenCV,在 http://www.opencv.org.cn/index.php/Download 下载 OpenCV for Windows(也即 OpenCV-2.4.6.exe 文件)。
2. 将 OpenCV-2.4.6.exe 解压到某个目录下,例如 D:\Program Files
3. 测试,快吧。
3.1、创建工程。打开VS2010,新建项目→win32控制台项目-〉确定→下一步-〉选空项目-〉完成。
3.2、打开配置文件。点击“视图”→“其他窗口”→“属性管理器”,从左侧项目中打开“Debug| Win32”→“Microsoft.Cpp.Win32.user”,双击“Microsoft.Cpp.Win32.user”对其进行编辑。
3.3、配置工程。点击左侧VC++目录,编辑右侧的可执行文件目录、包含目录与库目录,分别添加对应的路径。
D:\Program Files\opencv\build\x86\vc10\bin
说明:1、可根据自己的情况,将其改为你的opencv\build\x86\vc10\bin文件夹所在的路径;
D:\Program Files\opencv\build\include
D:\Program Files\opencv\build\include\opencv
D:\Program Files\opencv\build\include\opencv2
说明:1、可根据自己的情况,将其分别改为你的opencv\build\include、opencv\build\include\opencv和opencv\build\include\opencv2文件夹所在的路径; 2、这里的include目录为build文件夹下的include目录,不要选成与build文件夹在同一个根目录下的那个include文件夹。
D:\Program Files\opencv\build\x86\vc10\lib
说明:1、可根据自己的情况,将其改为你的opencv\build\x86\vc10\lib文件夹所在的路径; 2、如果是64位系统,但工程属性为win32控制台工程,所以仍用x86的库
opencv\build\x86\vc10\lib
文件夹里的lib文件名称:
opencv_calib3d246d.lib
opencv_contrib246d.lib
opencv_core246d.lib
opencv_features2d246d.lib
opencv_flann246d.lib
opencv_gpu246d.lib
opencv_haartraining_engined.lib
opencv_highgui246d.lib
opencv_imgproc246d.lib
opencv_legacy246d.lib
opencv_ml246d.lib
opencv_nonfree246d.lib
opencv_objdetect246d.lib
opencv_ocl246d.lib
opencv_photo246d.lib
opencv_stitching246d.lib
opencv_superres246d.lib
opencv_ts246d.lib
opencv_video246d.lib
opencv_videostab246d.lib
说明:上面的库为opencv\build\x86\vc10\lib里面的库文件,文件名后面有小写字母“d”的为Debug库(调试模式库),没有“d”的为Release库(发布模式库)。末尾的244是版本号,和你lib里面的文件一致的。比如,OpenCV2.4.3的lib文件的末尾数字为243。如果版本不一样,要改正,使其一致。
#include <opencv2\opencv.hpp> #include<iostream> using namespace cv; void main(){ IplImage *src; src = cvLoadImage("lena.jpg"); //这里将lena.jpg和lena.cpp文件放在同一个文件夹下 cvNamedWindow("lena",CV_WINDOW_AUTOSIZE); cvShowImage("lena",src); cvWaitKey(0); cvDestroyWindow("lena"); cvReleaseImage(&src); }
4.2.1、Debug下的运行结果
你成功了么?我编译成功了,但执行的时候出错了,错误是
网上有的说是DirectX没有装,但是我装了也没解决问题,原来要用到的DLL库还要拷贝到生成的程序目录里,跟DirectX装不装倒没什么关系。
5. 更进一步。
5.1、这里配置的路径是绝对路径,而不是相对路径,为了修改方便我们可以设置一下环境变量。
点击左下角视窗键-〉右键单击计算机→属性→高级系统设置→环境变量,这样就打开了环境变量的配置页面。环境变量分为用户变量和系统变量,用户变量只对系统当前用户有效,系统变量对本系统所有用户有效,用户变量好像可以对系统变量进行覆盖。
我们为系统变量PATH(可能大写也可能小写) 添加 D:\Program Files\opencv\build\x86\vc10\bin; ,分号用于区分多个变量;
添加变量OpenCV_DIR ,变量值为 D:\Program Files\opencv\build ,这样我们上边输入的三个路径:
D:\Program Files\opencv\build\x86\vc10\bin
D:\Program Files\opencv\build\include
D:\Program Files\opencv\build\x86\vc10\lib
就可以变为:
%OpenCV_DIR%\x86\vc10\bin
%OpenCV_DIR%\include
%OpenCV_DIR%\x86\vc10\lib
刚才的PATH变量也可以改为添加 %OpenCV_DIR%\x86\vc10\bin;
提示:环境变量要计算机重启才能生效。
5.2、这里配置的其实是VS2010的路径,因此以后创建的所有工程都会用到这个路径。但是有时候我们只想对某个工程进行配置的话可以参考官方文档:
http://www.opencv.org.cn/opencvdoc/2.3.2/html/doc/tutorials/introduction/windows_visual_studio_Opencv/windows_visual_studio_Opencv.html#windows-visual-studio-how-to
提示:一个工程的配置文件可以导入到其他工程中。
You can find your property sheets inside your projects directory. At this point it is a wise decision to back them up into some special directory, to always have them at hand in the future, whenever you create an OpenCV project. Note that for Visual Studio 2010 the file extension is props, while for 2008 this is vsprops.
Next time when you make a new OpenCV project just use the “Add Existing Property Sheet...” menu entry inside the Property Manager to easily add the OpenCV build rules.