本人喜欢研究图像处理,也很喜欢matlab软件,然而,matlab虽然入门简单,容易掌握。但是,其运行效率以及工业界的使用范围远远不及OpenCV。这几天,本人通过搜索大量网络资料,并亲自测试,终于找到了一套完整的环境配置方案。希望能够对OpenCV的初学者有所帮助。
请在阅读本文时,务必注意OpenCV和VS的版本问题。因为不同的版本,配置过程也是略有区别的。OpenCV使用的是OpenCV2.4.8(既然有最新的版本,为什么还要用旧的?就好像,明明已经有了打火机,你还非要用钻木取火的方式点火吗?搞电脑的最需要有紧跟时代步伐的意识)。好了,进入正题。
本文主要内容:
一、下载OpenCV2.4.8
二、设置环境变量
三、对VS2010的环境配置
四、测试程序
五、运行结果
一、下载OpenCV2.4.8
1. 下载 OpenCV for Windows(也即 OpenCV-2.4.8.exe 文件,这个软件网上有很多的)图标应该是这样的:
2. 将
OpenCV-2.4.8.exe解压并放到某个目录下,例如 D:\Program
(本人的解压目录)。
Files (x86)\OpenCV2.4.8
二、设置环境变量
1. 右键单击“我的电脑”-->“属性”-->“高级系统设置”-->“环境变量” 如下图所示:
2. 系统变量设置(注意:好多网络教材都设置了用户变量,为了减少操作步骤,本人并没有设置,而是只设置系统变量。)
(1)设置系统变量PATH
选中PATH,单击编辑。在PATH的末尾添加以下路径:
D:\Program Files (x86)\OpenCV2.4.8\opencv\build\x86\vc10\bin
注意:1、要在该路径前添加英文分号;,以与前面的路径隔开,但该路径末尾不可加英文分号;,除非还要在其后添加路径;
2、可根据自己的情况,将其改为你的opencv\build\x86\vc10\bin文件夹所在的路径;
3、最为关键的一点:本人使用的虽然是64位系统,但是,并没有设置成opencv\build\x64\vc10\bin,而是设置成opencv\build\x86\vc10\bin。
4、路径中的VC10是和VS的版本号有关的。vc10,vc11, vc12 分别表示VS2010, VS2012, VS2013的Visual Studio使用的编译器版本,根据自己的VS版本来填写正确的编译器版本号。
(2)在系统变量中新建OpenCV变量
单击新建,在弹出的对话框中,将变量名(可以自己定义)和变量值分别设置为OPENCV和D:\Program Files (x86)\OpenCV2.4.8\opencv\build。你要根据自己安装的路径来选择,找到opencv文件下的build即可。
注意:设置完环境变量,需要重启电脑,才能生效。
三、对VS2010的环境配置
配置VS2010,亦即告诉VC去什么地方寻找OpenCV的头文件和库。打开VS2010,选择菜单“工具”→“选项”→“项目和解决方案”→“VC++目录”,在VS2010中打开此选项,如下图所示,显示编辑功能被否决。
可以在具体的项目中,对特定的项目单击右键→属性来设置,只是这样的设置无法被继承,每一个项目都需要单独设置,太过繁琐,因此需要一个能够被继承的全局设置,方法如下:
要求:确保VS2010中至少有一个工程被打开。这里采用新建一个工程的办法,以便后面测试程序。
1.新建一个VS项目
(1)打开VS2010,新建项目→win32控制台项目→确定。
在这里,我给项目命名为lena,位置是在:OpenCV下新建的一个 OpenCVProject文件夹中。
(2)选择“下一步”
(3)选择“空项目”,再单击“完成”。
2.设置VS项目的调用路径
(1)点击“视图”→“属性管理器”,如下图所示。
(2)从左侧项目中打开“Debug|Win32”→“Microsoft.Cpp.Win32.user”,双 击“Microsoft.Cpp.Win32.user”,弹出如下图所示的窗口。
(3)点击左侧VC++目录,编辑右侧的“可执行文件目录”、“包含目录”与“库目录“,分别添加对应的路径。
对应的路径如下:
1)可执行文件目录
D:\Program Files(x86)\OpenCV2.4.8\opencv\build\x86\vc10\bin
说明:1、可根据自己的情况,将其改为你的opencv\build\x86\vc10\bin文件夹所在的路径;
2、即使是64位系统,也要选择 opencv\build\x86\,切记!!
2)包含目录
D:\Program Files(x86)\OpenCV2.4.8\opencv\build\include
D:\Program Files(x86)\OpenCV2.4.8\opencv\build\include\opencv
D:\Program Files(x86)\OpenCV2.4.8\opencv\build\include\opencv2
说明:1、可根据自己的情况,将其分别改为你的opencv\build\include、opencv\build\include\opencv和 opencv\build\include\opencv2文件夹所在的路径;
2、这里的include目录为build文件夹下的include目录,不要选成与build文件夹在同一个根目录下的那个 include文件夹。
3)库目录
D:\Program Files (x86)\OpenCV2.4.8\opencv\build\x86\vc10\lib
说明:1、可根据自己的情况,将其改为你的opencv\build\x86\vc10\lib文件夹所在的路径;
2、即使是64位系统,也要选择x86。
(4)附加依赖项
1)单击“链接器”→“输入”→“附加依赖项”,如下图所示。
注意:“添加依赖项”是最容易出错的,因为不同的VS版本的配置是有区别的。比如,VS2008中xx.lib之间用空格键(应该是英文状态的空格,本人没有亲自试验),而VS2010用分号隔开(英文状态下的分号,本人亲自测试过)。本人使用的是VS2010的设置方法。
2)如下图所示,在附加依赖项里,添加opencv\build\x86\vc10\lib
文件夹里的lib文件名称:
注意:不要被上面的图片误导,图片中每个.lib之间好像是回车隔开的,其实不是。你只需要把下面的内容复制进去即可。当然,你的OpenCV必须是2.4.8版本,如果不是,就需要把248改成你相应的OpenCV的版本号。比如,你用的是OpenCV2.4.4,就要把248完全改成244。最后的几个“32“不用改。
附加依赖项:
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_photo248d.lib;opencv_stitching248d.lib;opencv_ts248d.lib;opencv_video248d.lib;
opencv_videostab248d.lib;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_photo248.lib;opencv_stitching248.lib;opencv_ts248.lib;
opencv_video248.lib;opencv_videostab248.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;
comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib
说明:上面的库为opencv\build\x86\vc10\lib里面的库文件,文件名后面有小写字母“d”的为Debug库(调试模式 库),没有“d”的为Release库(发布模式库)。
四、测试程序
#include<iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace cv;
int main()
{
// 读入一张图片(游戏原画)
Mat img=imread("whu.jpg");
// 创建一个名为 "原画"窗口
namedWindow("原画");
// 在窗口中显示原画
imshow("原画",img);
// 等待6000 ms后窗口自动关闭
waitKey(6000);
}
五、运行结果
(转载请注明作者和出处http://blog.csdn.net/liuqinglong110/article/details/30051219, 未经允许请勿用于商业用途)