参考文章:
http://blog.csdn.net/dcrmg/article/details/54097419#comments
参考文章:
http://www.cnblogs.com/freedomshe/archive/2013/01/11/win7_vs2012_opencv_rebuild.html
参考文章:
http://blog.csdn.net/winnie_rq/article/details/52124974
在官网http://opencv.org/releases.html下载opencv3.3.0,解压放在D盘目录下,无需安装。
在官网https://cmake.org/download/下载CMake3.8.2,解压放在D盘目录下,无需安装。
第一步:打开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”后就开始执行第一次生成。可能我的网速比较慢,别人说2min就好了,我整个过程下来,都看了两集《老友记》了。
第一次生成后
第六步:第一次“Configure”生成之后,但还需要第二次执行生成,再次单击“Configure”按钮,执行第二次生成;
第七步:经过两次“Configure”之后,点击“Generate”按钮生成最终的OpenCv解决方案。退出Cmake。
第一步:生成后在自己创建的文件夹MyOpenCV下查看生成的项目,双击打开工程OpenCV.sln;
第二步:在CmakeTargets下选择ALL_BUILD,右键单击生成;
第三步:在CmakeTargets下选择INSTALL,右键单击生成;
第四步:生成好后,打开MyOpenCV文件夹,将install文件夹拷贝到D:\opencv下,并将install重命名为vc14x86。此时D:\MyOpenCV没用了,但不能删除,否则无法跟踪源码,网上说可以通过“清理解决方案”来减小,我还没有尝试。
将install文件夹拷贝到D:\opencv下,并重命名为vc14x86。
右击计算机->属性->高级系统设置->高级->环境变量,找到系统变量中的path,点击编辑,添加路径 :
D:\opencv\vc14x86\x86\vc14\bin
第一步:添加好环境变量后,打开VS2015,新建一个空的C++win32控制台工程,并在源文件中添加一个cpp文件,比如:main.cpp;
第二步:打开菜单栏中视图->其他窗口->属性窗口,在属性管理器列表中选择Debug|Win32 -> Microsoft.Cpp.Win32.user,右键点击属性(注意如果之前生成的是x64的,应选择Debug|x64)对属性进行配置;
第三步:通用属性 -> VC++目录 ->包含目录中添加
D:\opencv\vc14x86\include
D:\opencv\vc14x86\include\opencv
D:\opencv\vc14x86\include\opencv2
第四步:通用属性 -> VC++ 目录 -> 库目录中添加
D:\opencv\vc14x86\x86\vc14\lib
第五步:通用属性 -> 链接器 -> 输入 -> 附加依赖项中添加
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
在main.cpp中编写如下代码:
设置断点,进入imread函数:
错误一:第一次点击Configure后出现错误提示:“Error in configuration process, project files may be invalid ”
解决方法:在D盘目录下创建新的文件夹MyOpenCV。
错误二:在错误一解决后再点击Configure时出现下列错误提示:“CMake Error at CMakeLists.txt:127 (Project): No CMAKE_CXX_COMPILER could be found”。
这是因为默认的编译器是Visual Studio 15 2017, 网上说cmake会自动选择本机已经安装的目标编译器,我就没有改,但点击“finish”后,弹出错误。
解决方法:更改默认的目标编译器,首先点击CMake左上角的File->Delete Cache,把之前选择的清除掉再重新选择。VS2015对应vc14,应该选Visual Studio 14 2015(这里需要注意下,这个版本生成的是x86,网上很多说这个问题的,但当时我也没特别注意,就选的这个编译器。记得有个Visual Studio 14 2015 x64,忘了具体是什么名称,记得有个64,选择那个编译器生成的应该是x64。不过也没关系,生成x86也一样用)
错误三:按照别人的参考文章,双击OpenCV.sln后直接F5编译,会弹出这个错误提示:无法启动程序:“D:\MyOpenCV\Debug\ALL_BUILD”,系统找不到指定的文件。
解决方法:点击确定,在CmakeTargets下选择ALL_BUILD,右键单击生成,再选择INSTALL,右键单击生成(具体参考上文步骤)
错误四:弹出如下错误提示:“源文件与模块生成时的文件不同。是否希望调试器使用它?”
这里应该是我之前选的都是x64,最后生成的是x86的。
解决方法:点击“是”。