PS:请参考最新的《Opencv完美配置攻略 2014 (Win8.1 + Opencv2.4.8 + VS 2013)》(http://my.phirobot.com/blog/2014-02-opencv_configuration_in_vs.html),绝对给力!由于Opencv版本升级,大多人开始用新版本VS,等等,这篇已经过时了,而且当时没有在文中加入更合适的简介的配置方法,所以有一些东西不再适用。重写一篇,,无论是Win7还是Win8,无论是VS2010, VS2012, 还是VS2013,无论是Opencv 2.x.x,方法都是一样的,只是配置思路和操作流程不同而已。
如果想重新编译Opencv,可以参考《Win7x64+VS2012+OpenCV2.4.3+CMake2.8.10+TBB41重编译OpenCV》,(http://www.cnblogs.com/freedomshe/archive/2013/01/11/win7_vs2012_opencv_rebuild.html)
不过新版本也许不用配置ttb了。
摘要:在VS2010环境中应用Opencv,网上找到了很多配置方法,但大多都是老版本的,很多新手面对最新版本的Opencv无从下手,就给新手童鞋写了这么一篇超级详细的配置攻略,贴上来共享。要强调一点的就是,这种配置方法里使用的Opencv库是直接安装Opencv时候自带的dll库,在你的VS里面是无法调试Opencv的。如果需要调试Opencv,必须应用自己编译出来的Opencv库,具体怎么编译自己的Opencv库,网上有很多例子,再此不再赘述。
1、下载软件
下载OpenCV-2.4.0,双击解压到%opencv%(凡是出现%opencv%的地方均替换为你自己opencv的路径全名,如D:\program\opencv)。
下载VS2010,安装。
2、配置OpenCV环境变量
计算机->(右键)属性->高级系统设置->高级(标签)->环境变量->(双击)path(用户,系统里面的path任选其一)->在变量值里面添加” %opencv%\build\x86\vc10\bin”和”%opencv%\build\common\tbb\ia32\vc10”(新版本这个可以没有),注意不同的变量需要用分号(;)隔开。
(里面的%opencv%记得换成自己的opencv路径。例如我的:D:\program\ifly\bin;D:\ProgramFiles (x86)\opencv\build\x86\vc10\bin;D:\Program Files(x86)\opencv\build\common\tbb\ia32\vc10)。
3、配置工程的opencv依赖
1)属性->VC++目录:需要配置“包含目录”和“库目录”两项。
2)、配置“包含目录”项:添加行”%opencv%\build\include”即可。
但在运行别人的opencv项目时,可能别人直接引用了上述目录的子目录路径,如果出现include错误,则再添加”%opencv%\build\include\opencv”和(或)”%opencv%\build\include\opencv2”,即可解决问题。注意要选中下面的钩,从父级或项目默认设置继承
3)、配置“库目录”项:添加行”%opencv%\build\x86\vc10\lib”即可。注意要选中下面的钩,从父级或项目默认设置继承
4)、配置链接器:属性->右键属性->链接器->输入->附加依赖项
针对debug配置添加以下库: 注意这是2.40的库,如果是别的库,需要更改下面的数字 240,比如是2.42的库,则为242
opencv_calib3d240d.lib
opencv_contrib240d.lib
opencv_core240d.lib
opencv_features2d240d.lib
opencv_flann240d.lib
opencv_gpu240d.lib
opencv_highgui240d.lib
opencv_imgproc240d.lib
opencv_legacy240d.lib
opencv_ml240d.lib
opencv_objdetect240d.lib
opencv_ts240d.lib
opencv_video240d.lib
如果是release配置(以后再说,只需要添加上面的debug配置就行了现在),则添加:
opencv_calib3d240.lib
opencv_contrib240.lib
opencv_core240.lib
opencv_features2d240.lib
opencv_flann240.lib
opencv_gpu240.lib
opencv_highgui240.lib
opencv_imgproc240.lib
opencv_legacy240.lib
opencv_ml240.lib
opencv_objdetect240.lib
opencv_ts240.lib
opencv_video240.lib
4、用VS2010新建控制台工程测试:
1)、文件->新建->项目->Visual C++->Win32 控制台应用程序(输入名称test)
2)、确定->下一步->附加选项选“空项目”->完成
3)、解决方案资源管理器->源文件(右键)->添加->新建项
4)、Visual C++->C++文件:输入名称test点添加
5)、粘贴下面的代码,保存
1 #include <opencv2\opencv.hpp>
2 #include <iostream>
3 #include <string>
4 using namespace cv;
5 using namespace std;
6 int main()
7 {
8 Mat img = imread("pp.jpg");
9 if(img.empty())
10 {
11 cout<<"error";
12 return -1;
13 }
14 imshow("xx的靓照",img);
15 waitKey();
16
17 return 0;
18 }
6)、把自己的靓照改名为pp.jpg,然后放到工程项目的test文件夹里面(是里面那个test文件夹)
7)、按照第3步骤的方法配置工程的opencv依赖。
8)、按F5,如果你的图片出来了就OK了。
Opencv开发常包含的头文件:"cv.h" "highgui.h" <opencv2/opencv.hpp> 这个三个对图像处理一般足够了。
Notes:头文件中的 “/”是在该子文件夹里的文件,例如 "opencv2/core/core_c.h"
#include "cv.h"
/****************************************
#include "opencv2/core/core_c.h"
#include "opencv2/core/core.hpp"
#include "opencv2/imgproc/imgproc_c.h"
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/video/tracking.hpp"
#include "opencv2/features2d/features2d.hpp"
#include "opencv2/flann/flann.hpp"
#include "opencv2/calib3d/calib3d.hpp"
#include "opencv2/objdetect/objdetect.hpp"
#include "opencv2/legacy/compat.hpp"
********************************************/
#include "highgui.h"
/*****************************************
#include "opencv2/core/core_c.h"
#include "opencv2/core/core.hpp"
#include "opencv2/highgui/highgui_c.h" // windows
#include "opencv2/highgui/highgui.hpp"
****************************************/
#include <opencv2/opencv.hpp>
/***************************************
#include "opencv2/core/core_c.h"
#include "opencv2/core/core.hpp"
#include "opencv2/flann/miniflann.hpp"
#include "opencv2/imgproc/imgproc_c.h"
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/photo/photo.hpp"
#include "opencv2/video/video.hpp"
#include "opencv2/features2d/features2d.hpp"
#include "opencv2/objdetect/objdetect.hpp"
#include "opencv2/calib3d/calib3d.hpp"
#include "opencv2/ml/ml.hpp"
#include "opencv2/highgui/highgui_c.h"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/contrib/contrib.hpp"
****************************************/