首先声明一下我在电脑上所做的工作:
我是在vs2010上配置了opencv2.4.9,在vs2017上配置opencv2.4.9和opencv3.2.4(即在2017上配了两个版本的opencv)
1.下载和安装opencv2.4.9,opencv官网可以下载,其实安装就是解压下载的.exe文件然后解压到某个文件夹下,我的是解压到了E:\opencv-2.4.9
2.配置环境变量
对于32位系统,就添加:”…… opencv\build\x86\vc10\bin”
而对于64位系统,可以两个都添加上:
”…… opencv\build\x86\vc10\bin”
和…… opencv\build\x64\vc10\bin”
这样,到时候才可以在编译器Win32和X64中来回切换都吃得开,游刃有余~,由于我在VS2017上还装了两个opencv,所以我只添加了一个win32的,即x86的那个,如图所示:
3.打开属性管理器属性页面
之前看过的好多博文都说“每次新建工程都要重新配置”,其实不用这样麻烦的。
首先是在Visual Studio里面新建一个空项目控制台应用程序,然后源文件处右击->添加->新建项添加一个main.cpp,由于这几部比较简单,所以就不贴图了。
然后在菜单栏 点击 视图->属性管理器,在新出现的“属性管理器”工作区中,点击项目->Debug|Win32->Microsoft.Cpp.Win32.userDirectories(右键属性,或者双击)即可打开属性页面
然后就可以一番配置了
4.配置
a.工程库(include)目录的配置
【通用属性】 ->【VC++目录】 ->【包含目录】中
添加上
E:\opencv-2.4.9\opencv\build\include
E:\opencv-2.4.9\opencv\build\include\opencv
E:\opencv-2.4.9\opencv\build\include\opencv2 这三个目录。
当然,这是之前把OpenCV解压到E:\opencv-2.4.9\下的情况。实际的路径还要看你自己把OpenCV解压到了哪个目录下,根据你的实际情况来调节。
b.工程库(lib)目录的配置
【通用属性】 ->【VC++目录】 ->【库目录】中
添加上E:\opencv-2.4.9\opencv\build\x86\vc10\lib这个路径
这里选择x86还是x64是一个常常令人困惑的问题。当然,对于32位操作系统,铁定就是选x86了.如果是64位操作系统,很多童鞋会想当然自作聪明地选择x64,其实不然。正确的理解是这样的:
不管你是32位还是64位操作系统,只用管你用win32编译器还是X64编译器。其实配置选择什么跟64位还是32位系统没有直接的关系,而是在于你在编译你的程序的时候是使用那个编译器。
本人在VS2017配置两个opencv版本就是采用不同的编译器实现的,即opencv3.2.4是采用x64的编译器,而opencv2.4.9采用的是win32的编译器
c.链接库的配置
【通用属性】 ->【链接器】->【输入】->【附加的依赖项】
对于【OpenCV2.4.9】,添加如下249版本的lib(这样的lib顺序是:19个带d的debug版的lib写在前面,19个不带d的release版的lib写在后面):
opencv_ml249d.lib
opencv_calib3d249d.lib
opencv_contrib249d.lib
opencv_core249d.lib
opencv_features2d249d.lib
opencv_flann249d.lib
opencv_gpu249d.lib
opencv_highgui249d.lib
opencv_imgproc249d.lib
opencv_legacy249d.lib
opencv_objdetect249d.lib
opencv_ts249d.lib
opencv_video249d.lib
opencv_nonfree249d.lib
opencv_ocl249d.lib
opencv_photo249d.lib
opencv_stitching249d.lib
opencv_superres249d.lib
opencv_videostab249d.lib
opencv_objdetect249.lib
opencv_ts249.lib
opencv_video249.lib
opencv_nonfree249.lib
opencv_ocl249.lib
opencv_photo249.lib
opencv_stitching249.lib
opencv_superres249.lib
opencv_videostab249.lib
opencv_calib3d249.lib
opencv_contrib249.lib
opencv_core249.lib
opencv_features2d249.lib
opencv_flann249.lib
opencv_gpu249.lib
opencv_highgui249.lib
opencv_imgproc249.lib
opencv_legacy249.lib
opencv_ml249.lib
需要注意的是,所粘贴内容即为之前我们解压的OpencV目录E:\opencv-2.4.9\opencv\build\x86\vc10\lib下所有lib库文件的名字
到此为止,如果前面不出错的话基本算配置完成了,可以新建一个控制台程序测试一下:测试代码如下
#include
#include
#include
using namespace cv;
int main()
{
// 读入一张图片(游戏原画)
Mat img=imread("pic.jpg");
// 创建一个名为 "游戏原画"窗口
namedWindow("游戏原画");
// 在窗口中显示游戏原画
imshow("游戏原画",img);
// 等待6000 ms后窗口自动关闭
waitKey(6000);
}
但是不幸的是本人在配置完成后并没有顺利的成功,提示出错如下所示:
后来在vs2017上配置opencv2.4.9也出现了这个问题,解决方法:
从网上下载缺失的MSVCP120D.dll,我是从一个百度网盘下的,网上搜应该很多,下下来就放到硬盘里了,如果有需要可以@我,下下来是一个压缩包,里面包含两个dll文件,把这两个dll文件复制到,一开始添加的环境变量那个路径里就行,我的是添加到了:
E:\opencv-2.4.9\opencv\build\x86\vc10\bin中,因为之后在VS2017中也有类似的错误,而2017用的是vc12所以我在E:\opencv-2.4.9\opencv\build\x86\vc12\bin中也添加了那两个dll文件,然后就没错了
到此,我的VS2010配opencv2.4.9算是成功了
在vs2017中配置2.4.9和上面的教程是一样的,唯一不同的可能就是在有vc10的地方配置的时候改成vc12,因为opencv2.4.9最高有vc12,而vs2017对应的是vc15,2.4.9没有,但不影响配置,之前网上查有人说2017不能配2.0的opencv,但是我成功了,就按上面的2010配方法即可用,采用的策略就是在win32编译器下配opencv2.4.9,在x64编译器下配置opencv3.2.4
在2017中配置3.2.4我之前写过教程,可以参考那个,配opencv3.2.4就比较简单了,没上面那么麻烦,所以就不往下写了