现网上有大量VS+opencv配置方法,而且方法基本都是只需第一次配置,以后无需重新配置。一次配置就一劳永逸的优势很明显,但也有一个很不方便的缺陷所在:假如你按照这样的方法配置了VS+opencv3,使用过程中感觉:“哇塞,opencv3大量的module用起来好爽,硬件加速用起来好快啊!!”,然而当你碰到难题需要上网求助,网上搜到大牛放出的代码超级完美的时候,却发现大牛用opencv2编写的程序你无法运行。作为刚入门的小白改编成opencv3又有些许困难.这是你想起来可以自己配置环境嘛,于是下载opencv2进行配置,duang.duang.duang配置一通....结果失败了。而且opencv3竟然也不能再用了!!! 上边其实是我初期遇到的问题,之后各种重装。。。心累。 下边介绍的方法:每次都需要重新配置项目,但优势在一个稳定!!opencv2和opencv3各种版本随便切换~~
…………………………………………………………正文分割线…………………………………………………………………
1. Visual studio 2015下载安装,
C盘容量不吃紧的话建议默认安装位置,毕竟速度快一点。
(要用到opencv)组件选择:vc++ 和visual studio2015updata(其他有需要后期再安装)
2.下载opencvSDK:
a. opencv2和opencv3官网下载地址如下:
opencv2410:https://sourceforge.net/projects/opencvlibrary/files/opencv-win/2.4.10/opencv-2.4.10.exe/download
opencv310 : https://sourceforge.net/projects/opencvlibrary/files/opencv-win/3.1.0/opencv-3.1.0.exe/download
b. opencv安装即解压,解压到合适的硬盘里。
3.环境配置:
其他方法中的系统环境变量设置在此不需要。直接进行配置。
a. 新建win32控制台应用程序,选择空项目,并先创建一个.cpp源文件
创建项目
空项目
新建一个.cpp源文件
b. 右键项目-->属性:
i). c/c++ -->附加包含目录:opencv文件/build/include(这一步操作中使用opencv2或opencv3,文件夹名称都一样)
ii). 链接器-->常规-->附加库目录:opencv2文件/build/x86/vc12/lib(若使用opencv3文件/build/x64/vc14/lib)
iii). Link-->输入-->附加依赖项(附加依赖项贴到教程最后opencv2和opencv3附加依赖项不一样,debug和release模式也不一样),最后点击:应用,确定
iv). 将opencv2和opencv3如下文件夹中的所有文件拷贝到文件夹C/windows/system32和C/windows/sysWOW64中 :
opencv2文件夹下的build/x86/vc12/bin 和?
opencv3文件夹下的build/x64/vc14/bin
4.解决方案平台选择(如图):
当使用opencv2需要选择x86,
当使用opencv3需要选择x64,
如果不匹配会出现如下错误:或者“模块计算机类型X86与目标计算机类型X64冲突”
5.缺失文件下载:
配置完成后第一次测试代码可能会出现某.lib后缀文件不存在(2017.11.27更新:重装系统后第一次配置opencv的时候终于记下了名字),出现这个问题的时候从网上搜索此lib后缀文件并下载放入opencv的lib库文件夹下,建议C/windows/system32和C/windows/sysWOW64中也复制进去,即可运行。
...................................................................................................................................................
以上完成以后,就能欢乐的使用opencv了,下次新建项目按需求重复3,4步,选择合适的文件夹即可。虽然每次新建项目都要多花费一分钟,但是好在opencv2与opencv3切换使用无压力不是嘛!!!
最后附上附加依赖项和测试代码:
附加依赖项:
(opencv2410,debug版)................................................................................................
opencv_ml2410d.lib
opencv_calib3d2410d.lib
opencv_contrib2410d.lib
opencv_core2410d.lib
opencv_features2d2410d.lib
opencv_flann2410d.lib
opencv_gpu2410d.lib
opencv_highgui2410d.lib
opencv_imgproc2410d.lib
opencv_legacy2410d.lib
opencv_objdetect2410d.lib
opencv_ts2410d.lib
opencv_video2410d.lib
opencv_nonfree2410d.lib
opencv_ocl2410d.lib
opencv_photo2410d.lib
opencv_stitching2410d.lib
opencv_superres2410d.lib
opencv_videostab2410d.lib
(opencv2410,release版)................................................................................................
opencv_objdetect2410.lib
opencv_ts2410.lib
opencv_video2410.lib
opencv_nonfree2410.lib
opencv_ocl2410.lib
opencv_photo2410.lib
opencv_stitching2410.lib
opencv_superres2410.lib
opencv_videostab2410.lib
opencv_calib3d2410.lib
opencv_contrib2410.lib
opencv_core2410.lib
opencv_features2d2410.lib
opencv_flann2410.lib
opencv_gpu2410.lib
opencv_highgui2410.lib
opencv_imgproc2410.lib
opencv_legacy2410.lib
opencv_ml2410.lib
(opencv310,debug版)................................................................................................
opencv_ts310d.lib??
opencv_world310d.lib
(opencv310,release版)................................................................................................
opencv_ts310.lib??
opencv_world310.lib
测试代码(opencv310,debug模式)...................................................................................
#includeusing namespace cv;
void main()
{
Mat im;
im = imread("xj.jpg");
imshow("OpenCV310", im);
std::cout << "-------------------" << std::endl
<< "OpenCV310 Success!!" << std::endl
<< "-------------------" << std::endl;
waitKey(0);
}