本篇文章是在Windows10下使用MinGW-w64、cmake、VSCode配置opencv环境。
起因是有一个小作业需要使用C++进行图像处理,要使用到opencv。一个小作业而已,用VSCode码就行,不想麻烦去下载VS,于是百度配环境,发现在Windows10上有点麻烦,遂成功后记录一下,方便以后配环境的同学。(Windows下配环境是真的心累)
参考博客
基本参考这篇博客
将 VSCode 打造成 OpenCV 的 IDE(C++,window10 1803)
软件版本及下载路径
但是我使用的各软件版本不一样,发现最后也成功了。版本如下:
-
MinGW-w64 (x86_64-8.1.0-release-posix-seh-rt_v6-rev0)
各版本下载地址https://sourceforge.net/projects/mingw-w64/files/mingw-w64/mingw-w64-release/ -
cmake 3.16.2 (用chocolatey下载,方便)
-
VSCode 1.41.1 x64
-
opencv-3.4.9-vc14_vc15
github上项目地址https://github.com/opencv/opencv
下载地址https://opencv.org/releases/,网速可能会很慢。
安装流程
安装大致思路(个人理解,仅供参考,不一定正确):
- 下载MinGW-w64,配C++环境。
把压缩包解压,然后配对应bin目录的环境变量即可,命令行检查是否安装成功g++ --version
和gcc --version
- 下载cmake,编译opencv源码(编译成功的文件才是我们需要的)。
这里我是使用chocolatey下载的,很方便。之后配cmake安装路径的bin环境变量。命令行检查cmake --version
- 下载opencv源码,解压,文件路径自定义,这里我是D:\opencv
- 具体操作看参考的博客方法(图文并茂),打开cmake的gui界面,
选择要编译的源码路径D:\opencv\sources,
和编译后文件存储的位置D:\opencv\build\x64\[folder]
([folder]为自己在D:\opencv\build\x64下新建的文件夹名)
cmake编译这里我是直接全部默认,没有去更改打勾属性,有其他博客里写道要更改打勾选项,这里自行选择。反正失败了可以把源码一删,重新来一次。 - 切换到对应位置D:\opencv\build\x64\[folder]打开cmd,键入命令
minGW32-make
和minGW32-make install
,很慢耐心等待。添加opencv编译完成的bin环境变量。 - VSCode安装支持C\C++扩展,建立工作区,写launch.json和tasks.json、c_cpp_properties.json。具体看开头的参考教程链接。这里我把参考博客中tasks.json里的.o文件改成.exe,对应launch.json里也要改成.exe文件。以及对应的opencv版本号要改成自己安装的opencv版本。
环境变量配置
除了mingw-w64和cmake另外的环境变量
- D:\opencv\build\x64\[folder]\bin
(opencv环境变量,[folder]为cmake编译opencv\sources的目标文件夹) - D:\opencv\build\include
我第一天没有这个环境变量,结果VScode一导入opencv2/opencv.hpp包,程序就直接闪退。加入之后,重启就正常运行了。
测试代码
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main(){
cv::Mat img = cv::imread("./test.png");
if (img.empty()){
cout << "empty" << endl;
system("pause");
return -1;
}
cv::namedWindow("Example1", cv::WINDOW_AUTOSIZE);
cv::imshow("Example1", img);
cv::waitKey(0);
cv::destroyWindow("Example1");
return 0;
}
区别
基本流程和参考的博客 将 VSCode 打造成 OpenCV 的 IDE(C++,window10 1803)一样(这里非常感谢博主)。
但完全按照该博主教程,我电脑上失败了,也不知道什么原因,很玄学。这里说一下自己的踩坑经历以及和博主不同的地方,方便大家,以减少配环境的时间成本。
坑:
- 我之前安装的是MinGW,按照该教程配,cmake那里编译有问题(编译完,对应bin文件夹下没有文件)。遂下载安装MinGW-w64,编译正常。
- VSCode的C\C++插件一定要运行,才可以来运行编译.cpp程序。
不同:
- VSCode的launch.json和tasks.json里-o配置程序编译输出文件后缀改为.exe。
- tasks.json对应的导入opencv文件名要改成自己的版本号。
- 环境变量我另加了一个,D:\opencv\build\include