Win10和Visual studio2015环境下opencv2/opencv3共存

现网上有大量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);

}