天下苦vsc久矣!
不想用vs导致的)

本文教程以编译opencv4.10.0为例

先决条件

  • 安装vscode
  • 安装mingw并设置系统变量
  • 安装cmake并设置系统变量

cmake 编译 opencv 源代码

打开cmake gui

  • 选择源码文件夹位置
  • 选择build生成文件夹位置
  • Configure选择mingw

设置

  • 勾选BUILD_opencv_world 将多个链接文件合并成一个文件
  • 搜索py 取消勾选所有相关
  • 搜索java 取消勾选所有相关
  • 搜索test 取消勾选所有相关
  • 取消勾选WITH_IPP
  • 勾选WITH_OPENGL

Configure时
由于网络原因导致一些文件下载不了,需要手动下载Build目录下查看CMakeDownloadLog.txt文件手动下载目标文件并放入指定目录
我是如下四个文件

ade-0.1.2d.zip
opencv_videoio_ffmpeg.dll
opencv_videoio_ffmpeg_64.dll
ffmpeg_version.cmake

再次重新Configure

png

最后点击Generate
生成Makefile文件

cmd进入build文件夹
运行

1
mingw32-make -j 8

编译完成后输入

1
mingw32-make install

会在build目录下生成install文件夹
此文件夹为最终使用的文件夹,可以提取出来改个名字

.vscode配置文件设置

将目录修改为你实际目录

c_cpp_properties.json

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
{
"configurations": [
{
"name": "Win32",
"includePath": [
"${workspaceFolder}/**",
"D:\\app\\openCV-minGW-4.10.0\\include",
"D:\\app\\openCV-minGW-4.10.0\\include\\opencv2"
],
"browse": {
"path": [
//库文件
"D:\\app\\openCV-minGW-4.10.0\\x64\\mingw\\lib"
]
},
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"compilerPath": "C:/app/mingw64/bin/g++",
"cStandard": "c11",
"cppStandard": "c++17",
"intelliSenseMode": "gcc-x64"
}
],
"version": 4
}

launch.json

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
{
"version": "0.2.0",
"configurations": [
{
"name": "opencv debuge",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceRoot}/Build/main.exe",
"args": [],
"stopAtEntry": false, //如果为 false,则调试直接运行。
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,//是否调用外部cmd
"MIMode": "gdb",
"miDebuggerPath": "C:\\app\\mingw64\\bin\\gdb.exe",//自己进行设置
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": false
}
],
"preLaunchTask": "opencv"
}
]
}

tasks.json

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
{
"version": "2.0.0",
"tasks": [
{
"type": "shell",
"label": "opencv",
"command": "g++",
"args": [
"${workspaceRoot}/*.cpp",
"-g","-std=c++17",
"-o", "main.exe",
"-I","D:\\app\\openCV-minGW-4.10.0\\include",
"-I","D:\\app\\openCV-minGW-4.10.0\\include\\opencv2",
"-L","D:\\app\\openCV-minGW-4.10.0\\x64\\mingw\\lib",
"-l","libopencv_world4100"
],
"options": {
//生成文件放在这
"cwd": "${workspaceRoot}/Build"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
}
},
]
}

关键一步

方法一

直接将bin目录设置成系统变量Path

方法二

将bin目录下dll文件放入exe程序相同文件夹
在本案中也就是工作目录下Build文件夹内

测试程序

1
2
3
4
5
6
7
8
9
10
#include<opencv2/opencv.hpp>

using namespace cv;
int main()
{
Mat img=imread("your_img_path");
imshow("image",img);
waitKey();
return 0;
}