https://www.cnblogs.com/lzhu/p/8198654.html
1、下载visual studio
https://visualstudio.microsoft.com/zh-hans/?rr=https%3A%2F%2Fwww.baidu.com%2Flink%3Furl%3DMXyDI4f7EuCQdvTdnKmFI1BQf5l-0erYSFn_AAO-L3XDaQt9G5w6HaNeFxtAJT1T%26wd%3D%26eqid%3D8c6c57cd00031457000000065c369cc2
下载Cmake
https://cmake.org/download/
3、下载OpenCV和contrib,选择release选择对应的版本
https://github.com/opencv
4、使用CMake创建OpenCV.sln。为了实现OpenCV的本地编译,首先要使用CMake创建OpenCV.sln,然后再使用VS2017进行编译,生成库文件。首先启动CMake,选择OpenCV的源代码目录和build目录,然后点击【Configure】,CMake开始执行配置,开始前,要选择正确的编译器,本PC上安装的是Visual Studio 2017 15.5.2,因此选择Visual Studio 15 2017 Win64.此时点击【Finish】,配置过程开始。只要OpenCV和CMake下载安装不出问题,一般来说这个过程是不会报错的,如果出错导致配置失败,则需要查阅日志文件,解决问题。这里说明一点,在Configure过程中,需要联网自动下载三个文件,可能会由于网络的问题导致下载不下来,如果由于该问题导致配置失败,可以通过重新配置的方法解决该问题,实在不行,可以去网上找这三个文件,手动下载
打开cmake,第一栏是下载的源码的sources文件夹路径,第二栏是在下载的opencv文件夹下自己新建的生成文件夹:InstallProject
在配置过程结束后,如果成功,则会在日志框里显示【Configuring done】,中间的配置框会变红,显示配置项。
第一次configure后,出现红色的(为新增的参数),视用途将以下部分打勾。
使用样例
将各模块合成至一个总模块
允许使用一些有专利的算法
contrib模块的设置(血泪史提醒用左斜杠,如果非要用右斜杠请用双斜杠转义)
支持C++11特性
然后再点击【Configure】,再次执行配置。不出意外的话,这个过程会很快完成,配置框变为白色。该步骤完成。本人在这里遇到了一个巨大的坑:本人的PC上安装了CUDA 9.0,不知道是没安装好还是兼容性问题,在成功生成OpenCV工程文件后,使用VS2017编译源代码,总是失败,折腾了两天时间。经过查阅编译日志(这里忘了截图),发现是CUDA编译器的问题,经过摸索,发现将BUILD_CUDA相关的项目勾选去掉,然后重新生成sln,解决了问题。后来我重装了系统,没有安装CUDA,则正常安装即可,可忽略这个步骤。
5、生成OpenCV.sln。配置完成后,点击【Generate】,生成VS工程文件。这个过程一般不需要太多时间,只要之前的过程没出错,这里一般不会有问题。
6、使用VS2017编译OpenCV源代码。点击【Open Project】按钮,CMake会启动VS2017并加载OpenCV.sln。加载过程可能要一点时间(相对于一般小规模项目而言),需要耐心等待。加载完成后,点击【生成】,选择【批生成】,然后只勾选INSTALL那两项,其他项目不勾选,然后开始生成。这个过程比较久,需要耐心等待。
这一步如果出错一般是因为Python版本过高引起的,如果不用Python就把所有Python的内容去掉即可
7、配置OpenCV环境变量。右击【此电脑 -> 属性 -> 高级系统设置 -> 环境变量 -> 系统变量 -> 编辑Path -> 新建】,添加环境变量E:\OpenCV\CMake_OpenCV\install\bin
(8)新建工程并测试。在VS2017中新建一个空的C++项目。在【属性管理器】中选中【Debug | x64->Microsoft.Cpp.x64.user】并右击弹出菜单,选择【属性】。
选择【C/C++ -> 常规 -> 附加包含目录】,添加如下三个目录:
再选择【链接器 -> 附加库目录】,添加如下目录:
再选择【链接器 -> 输入 -> 附加依赖项】,添加如下库文件名:
点击【确定】,【应用】。
创建一个cpp文件,并添加如下测试代码:
1 #include2 3 using namespace cv; 4 5 int main(int argc, char** argv) 6 { 7 Mat img = imread("C:\\Users\\lzhuc\\source\\repos\\opencv_test\\x64\\Debug\\lena.jpg"); 8 imshow("img", img); 9 waitKey(0); 10 return 0; 11 }
编译,运行,效果如下:
本人测试发现,如果配好了环境直接运行,会报错,发现img为空,是个0x0的矩阵,重启一下系统,就可以了。