参考链接:https://www.cnblogs.com/QuincyYi/p/12650272.html
https://blog.csdn.net/Elio_LosEr/article/details/82797106
一、下载
1、OpenCV:https://opencv.org/releases/
下载哪个版本都行。
2、opencv_contrib:https://github.com/opencv/opencv_contrib
一定选择和opencv一样的版本号。
3、cmake:https://cmake.org/download/
二、解压opencv,opencv_contrib,cmake
1.直接运行opencv 的exe文件,解压到文件夹
把文件路径存成这样的格式
2.解压cmake到文件夹
三、cmake编译opencv
1.打开cmake
2.选择source code路径和生成路径
source code路径就是解压的opencv中的sources文件夹。
自己选择一个生成的路径,选择的目录最好还在opencv文件夹中,但不能是opencv文件夹中原有的目录,命名随意,最好是纯英文。
3.点击configure,选择对应的vs版本,我是vs2017
注明平台类型,默认是win32,这里选x64
点击finish,等待几分钟,第一次 configure done
4.排错(以下内容属转载)
区域1和区域2,必须没有红色才能Generate。
(1)区域1的问题如下处理:
首先找到“BUILD_opencv_world”和“OPENCV_ENABLE_NONFREE”这两个变量,在变量后面的方框内打上“√”。第一个变量的含义是生成一个大的.lib文件,在配置链接器时只有一个“opencv_world410d.lib”文件。第二个变量的含义是为了在编译成功后可以使用具有专利保护的算法,如果该变量不被选中,就不能使用例如SIFT算法在内的具有专利保护的算法。
之后找到“OPENCV_EXTRA_MODULES_PATH”变量,该变量的含义是告诉编译器扩展包的源码在哪里,选择我们刚才下载的opencv_contrib安装包里的modules文件夹。如果这个变量为空,在编译过程中也不会报错,只是安装了OpenCV的基础版。
区域1有红色,反复多次config 直到没有红色为止 就可以了。
(2)区域2的问题如下处理:CMakeDownloadLog.txt
我试了这个方法,文件下载不成功,解决方法:https://blog.csdn.net/weixin_42386056/article/details/105576333
区域1和区域2,必须没有红色才能Generate。
5.Generate完成之后,点击open project
接下来的步骤在vs2017中进行
四、用vs生成
根据自己的需要,选择Debug和Release,生成
之后右键CMakeTargets中的INSTAKLL,选择仅限于项目->仅生成INSTALL。注意:debug和release之后都需要运行INSTALL,不然会少文件。
五、配置环境
参考链接:https://blog.csdn.net/Elio_LosEr/article/details/82797106
1、配置环境变量:
右键此电脑->高级系统设置->环境变量,编辑系统变量中的path,将install\x64\vc14\bin的路径添加到path中,确定。
C:\opencv\opencv4.3.0\newbuild\install\x64\vc15\bin
注意:这要改成你的路径。
2、打开vs2017,创建一个新项目。
3.在vs中打开属性管理器。
视图→其他窗口→属性管理器
在属性管理器中选择对应的环境,我刚才生成的是Release x64的,所以选择这个
右键→属性,打开属性页
(1)编辑VC++目录→包含目录,添加install中include文件夹及其下opencv和opencv2两个路径
C:\opencv\opencv3.4.3\newbuild\install\include
C:\opencv\opencv3.4.3\newbuild\install\include\opencv
C:\opencv\opencv3.4.3\newbuild\install\include\opencv2
(2)VC++目录——库目录添加lib文件夹
C:\opencv\opencv3.4.3\newbuild\install\x64\vc15\lib
(3)链接器→输入→附加依赖项,添加opencv_world343.lib(注意版本号和debug带d)
4、配置完成了,找个程序测试下,注意选择之前生成操作的状态Release x64
#include <opencv2\opencv.hpp>
using namespace cv;
int main()
{
Mat img = imread("test.jpg");
imshow("test", img);
waitKey(0);
return 0;
}