我个人比较喜欢用vscode写代码,以前是感觉写python很方便,后面即便要写C++也不想换编辑器了。相较于vs来说,在vscode上配置opencv的并不算多,在配置的过程中也踩了很多坑,因此写一篇博客记录一下,希望能有帮助。
在vscode上配置opencv之前,先默认已经能够在vscode上实现C++代码的编写和运行了,如果不可以的话,可以看这篇文章:VSCode+win10 C++多文件编译调试
mingw64在之前那篇文章里已经说过如何安装了,非常简单方便。这里就不再叙述。
对于cmake来说,可以直接在官网下载软件进行安装:cmake官网
下载完后,找出它的cmake-gui文件,打开如下:
在这里下载软件:opencv下载
选择自己想要的就行,我选的是opencv4.5.2,选择这个:
点击它之后会进行解压操作,放在自己想放的位置就行。
这个时候文件里应该是这样的:
我们返回到cmake-gui中,source code和binaries的路径选择如下:
注意的是,这里的MinGW是自己创建的,也就是是一个空的文件夹,你可以取任何名字,但注意的是,后续所有的配置和设置中,都别忘了把MinGW换成你自己取的名字。
然后点击Configure,出现如下界面,选择这些选项:
在选择next,把你之前mingw64下gcc和g++的路径放上去:
点击Finish。这个时候他就会开始自己配置,等到他配置完了之后,界面上应该是红色的,建议往下翻一番,找到BUILD_opencv_world,如果他选择了的话就把勾取消了,我这里是默认不选的:
然后再点一遍Configure
,配置完后,点击Generate
(注意,就算BUILD_opencv_world没被选也要再点一遍Configure)
生成完后,你打开刚刚创建的那个MinGW文件,会发现里面多了很多东西。你在这个文件夹下打开powershell,输入命令mingw32-make.exe,这个时候就会开始编译了。建议用多线程,比如mingw32-make.exe -j 4,这样会快一些。这边的时长大概在30min左右。
编译完毕后,把以下三个环境变量添加进去:
有的系统需要重新启动才能生效,有的不需要,自行决定即可。
我们假设已经能够在终端上打印出“hello world”了(如果不可以,请看VSCode+win10 C++多文件编译调试),那么我们把这一段复制进去:
#include
#include
#include
using namespace cv;
using namespace std;
int main()
{
cout<<"hello world..."<<endl;
Mat img=imread("C:\\Users\\cxm\\Desktop\\test.png");
cv::imshow("image",img);
cv::waitKey();
return 0;
}
现在你运行肯定会出错的,因为还没有把opencv添进去。打开你的tasks.json,更改如下:
{
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: g++.exe 生成活动文件",
"command": "D:\\softwares\\mingw64\\bin\\g++.exe",
"args": [
"-fdiagnostics-color=always",
"-g",
"${file}",
"-I", "D:\\softwares\\opencv\\build\\include",
"-I", "D:\\softwares\\opencv\\build\\include\\opencv2",
"-L", "D:\\softwares\\opencv\\build\\x64\\MinGW\\lib",
"-l", "libopencv_core452",
"-l", "libopencv_imgproc452",
"-l", "libopencv_imgcodecs452",
"-l", "libopencv_video452",
"-l", "libopencv_ml452",
"-l", "libopencv_highgui452",
"-l", "libopencv_objdetect452",
"-l", "libopencv_flann452",
"-l", "libopencv_imgcodecs452",
"-l", "libopencv_photo452",
"-l", "libopencv_videoio452",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "调试器生成的任务。"
}
],
"version": "2.0.0"
}
注意:
1. 如果你有自定义的头文件,依照按照之前那篇博客所说的方式添加进去
2. 注意我的编号都是452,你可以打开你的opencv\\build\\x64\\MinGW\\iib
文件,看一下你的编号是什么,这里一定一定一定要更改掉,千万不要一股脑就直接复制不管了!!!
3. 路径换成自己的
然后,你在.vscode下再创建一个文件叫c_cpp_properties.json,复制如下内容:
{
"configurations": [
{
"name": "win",
"includePath": [
"${workspaceFolder}/**",
"D:\\softwares\\opencv\\build\\include",
"D:\\softwares\\opencv\\build\\include\\opencv2"
],
"defines": [],
"compilerPath": "D:/softwares/mingw64/bin/gcc.exe",
"cStandard": "c11",
"cppStandard": "c++17",
"intelliSenseMode": "clang-x64"
}
],
"version": 4
}
注意把路径换成的
这个时候,你再在main.cpp下运行,就没问题了