参考文章 http://blog.csdn.net/moxiaonuo/article/details/77823990
一、下载安装
在官网http://opencv.org/releases.html下载opencv3.3.0,解压放在D盘目录下,无需安装。
在官网https://cmake.org/download/下载CMake3.8.2,解压放在D盘目录下,无需安装。
二、重编译
1、用CMake生成VS2015的OpenCV工程
第一步:打开CMake解压后的文件夹,在目录D:\cmake-3.8.2-win64-x64\bin下双击cmake-gui.exe;
第二步:在弹出的CMake窗口里,输入Opencv源码所在路径;
第三步:在D盘目录下创建新文件夹MyOpenCV,用于生成的OpenCV工程存放目录,如果不创建,好像在Configure后会弹出错误框,提示“Error inconfiguration process, project files may be invalid”;
第四步:点击“Configure”按钮;
第五步:在弹出的对话框中选择编译器Visual Studio 14 2015(这里需要注意的是该编译器生成的是x86的文件,如果编译64位dll应该选择64位的,我这里选成了32位的(无意的,当时选的时候不知道这些),32位就以后能编译32位的,64位亦然。
按照上述设置后,点击“Finish”后就开始执行第一次生成。中间有下载,下载不成功会导致失败,可以根据log去网上下载需要的文件放于某个位置(log里可以看出来)。
第一次生成后
第六步:第一次“Configure”生成之后,但还需要第二次执行生成,再次单击“Configure”按钮,执行第二次生成;
第七步:经过两次“Configure”之后,点击“Generate”按钮生成最终的OpenCv解决方案。退出Cmake。
2、用VS2015编译生成自己Opencv库
第一步:生成后在自己创建的文件夹MyOpenCV下查看生成的项目,双击打开工程OpenCV.sln;
第二步:在CmakeTargets下选择ALL_BUILD,右键单击生成; ***不知是否必须***
第三步:在CmakeTargets下选择INSTALL,右键单击生成;
第四步:生成好后,打开MyOpenCV文件夹,将install文件夹拷贝到D:\opencv下,并将install重命名为vc14x86。此时D:\MyOpenCV没用了,但不能删除,否则无法跟踪源码,网上说可以通过“清理解决方案”来减小,我还没有尝试。
将install文件夹拷贝到D:\opencv下,并重命名为vc14x86。
三、配置环境
1、环境变量配置
右击计算机->属性->高级系统设置->高级->环境变量,找到系统变量中的path,点击编辑,添加路径 :
D:\opencv\vc14x86\x86\vc14\bin (CMake得到并复制的文件夹里的)
2、VS2015中配置
Ⅰ、现在是基于之前win32 CMake编译,
下面是Debug下还要在Relaese下来一遍
Ⅱ、也可以是 生成->批生成->选择Install的debug和release->生成(首选)
第一步:添加好环境变量后,打开VS2015,新建一个空的C++win32控制台工程,并在源文件中添加一个cpp文件,比如:main.cpp;
第二步:打开菜单栏中视图->其他窗口->属性窗口,在属性管理器列表中选择Debug|Win32 -> Microsoft.Cpp.Win32.user,右键点击属性(注意如果之前生成的是x64的,应选择Debug|x64)对属性进行配置;
第三步:通用属性 -> VC++目录 ->包含目录中添加
D:\opencv\vc14x86\include (CMake得到并复制的文件夹里的)
D:\opencv\vc14x86\include\opencv
D:\opencv\vc14x86\include\opencv2
第四步:通用属性 -> VC++ 目录 -> 库目录中添加
D:\opencv\vc14x86\x86\vc14\lib (CMake得到并复制的文件夹里的)
第五步:通用属性 -> 链接器 -> 输入 -> 附加依赖项中添加 (Rlease 的不带d, Ⅱ法可同时全部添加上)
opencv_calib3d330d.lib
opencv_core330d.lib
opencv_dnn330d.lib
opencv_features2d330d.lib
opencv_flann330d.lib
opencv_highgui330d.lib
opencv_imgcodecs330d.lib
opencv_imgproc330d.lib
opencv_ml330d.lib
opencv_objdetect330d.lib
opencv_photo330d.lib
opencv_shape330d.lib
opencv_stitching330d.lib
opencv_superres330d.lib
opencv_video330d.lib
opencv_videoio330d.lib
opencv_videostab330d.lib