一开始网上查到的都是VS2017不支持OpenCV2.x,因为OpenCV还没有支持到VS2017的vc15……然而想要偷懒,卸了VS2017重装超麻烦的好吗,这个VS2017还是在装Unity的时候一不小心顺带装了以后本着“装都装好了干脆替换掉2013吧”的理念留下来的……
于是网上查到了办法,尝试通过Cmake自己编译配置。每一步都提心吊胆生怕它崩了,还好最后成功运行了……
【一.准备工作】
下载 OpenCV2.4.13.4 https://opencv.org/releases.html 并解压
我是解压到 C:\opencv24134
下载 Cmake https://cmake.org/download/ 并安装
我安装的是 cmake-3.10.0-win64-x64.msi
【二.编译配置】
解压后的OpenCV文件夹中有两个自文件夹,一个是sources,即用于编译的源文件;另一个是已经编译好的build,build对我们没有用,可以删掉了。新建一个build\vc15文件夹。
打开新安装的 CMake (cmake-gui) ,设置路径如下(根据自己解压的位置来):
然后点击下面的Configure,选定编译器为Visual Studio 15 2017,然后开始等待……
漫长的等待过去以后……妈耶,为什么都是红的,难道是报错!
懵逼,不知道发生了什么,然而根据下面的提示似乎需要再按一次Configure,于是按它,再等待,等待完了以后,哇居然红色都变白了!美滋滋地按下Generate。
Generate结束以后选择Open Project,Cmake会自动打开VS2017,运行Project。在项目列表中找到CMakeTargets下面的INSTALL,右键选择生成(分别在Debug和Release下生成一次),生成成功后即说明OpenCV已经编译成功了。
【三.更改系统环境】
在系统变量PATH中添加你编译的OpenCV路径,按照我的路径就是:
C:\opencv24134\opencv\build\vc15\install\x86\vc15\lib
然后把 C:\opencv24134\opencv\build\vc15\install\x86\vc15\bin
下的所有dll文件复制到 C:\Windows\SysWOW64以及C:\Windows\System32
【四.配置VS2017】
新建一个工程,依次点击“项目”,“属性”,配置如下内容:
(如果debug和release都用的话就都要设置,注意平台一般是Win32)
其中,包含目录中添加的是:
C:\opencv24134\opencv\build\vc15\install\include
C:\opencv24134\opencv\build\vc15\install\include\opencv
C:\opencv24134\opencv\build\vc15\install\include\opencv2
库目录中添加的是:
C:\opencv24134\opencv\build\vc15\install\x86\vc15\lib
左上角选择Debug,添加附加依赖项:
opencv_ml2413d.lib
opencv_calib3d2413d.lib
opencv_contrib2413d.lib
opencv_core2413d.lib
opencv_features2d2413d.lib
opencv_flann2413d.lib
opencv_gpu2413d.lib
opencv_highgui2413d.lib
opencv_imgproc2413d.lib
opencv_legacy2413d.lib
opencv_objdetect2413d.lib
opencv_ts2413d.lib
opencv_video2413d.lib
opencv_nonfree2413d.lib
opencv_ocl2413d.lib
opencv_photo2413d.lib
opencv_stitching2413d.lib
opencv_superres2413d.lib
opencv_videostab2413d.lib
左上角选择release,添加附加依赖项:
opencv_objdetect2413.lib
opencv_ts2413.lib
opencv_video2413.lib
opencv_nonfree2413.lib
opencv_ocl2413.lib
opencv_photo2413.lib
opencv_stitching2413.lib
opencv_superres2413.lib
opencv_videostab2413.lib
opencv_calib3d2413.lib
opencv_contrib2413.lib
opencv_core2413.lib
opencv_features2d2413.lib
opencv_flann2413.lib
opencv_gpu2413.lib
opencv_highgui2413.lib
opencv_imgproc2413.lib
opencv_legacy2413.lib
opencv_ml2413.lib
【五.测试】
新建cpp文件,输入以下代码:
#include
#include
#include
using namespace cv;
using namespace std;
int main()
{
Mat image = imread("D:\\img.jpg");//图片路径
if (!image.data)
{
cout << "图片读取失败!" << endl;
system("pause");
return -1;
}
namedWindow("Img", 1);
imshow("Lena", image);
waitKey();
return 0;
}
运行,若能成功显示图片则配置成功。
【六.这里是废话】
网上看到有人说运行程序的时候会报错说有什么dll文件缺失,据说去下载缺失的文件然后放入文件夹就可以解决啦,因为我没有碰到这个问题所以就不清楚了……
每一次配置环境都觉得心力交瘁,好在这次一次就成功了,撒花!