目录
[VScode配置和C++ demo](#VScode配置和C++ demo)
vscode安装
自行百度vs-code的安装,扩展中把中文,以及C/C++装上,也把cmake和cmake tool装上吧。网络不好或者不好安装的可以单独把.vsix下载了,用ctrl+shift+p打开Extension:Install from VSIX安装


cmake安装
https://cmake.org/files/v3.20/
https://cmake.org/files/v3.20/ 这链接里边把cmake3.20下载了。比如我是下的:cmake-3.20.1-windows-x86_64.msi ,然后安装到D盘。 然后把D:\cmake3.20.1\bin添加到系统Path。然后cmd中cmake --version

opencv安装
https://opencv.org/releases/
https://opencv.org/releases/ 这链接里边把opencv4.9.0下载了。 比如我是:opencv-4.9.0-windows.exe

opencv安装到D盘。 完了后需要关注一下: 是要有下边一些子文件夹的。
D:\opencv-4.9.0\opencv\build
D:\opencv-4.9.0\opencv\sources
D:\opencv-4.9.0\opencv\build\include\opencv2
D:\opencv-4.9.0\opencv\build\x64
这个x64文件夹里新建一个minGW,用来等会儿cmake编译opencv的包,于是便多了一个文件夹:
D:\opencv-4.9.0\opencv\build\x64\minGW
mingw安装
把mingW11.2.0下载了,要下这个格式:mingw-x86_64-11.2.0-release-posix-seh-rt_v9-rev0.7z ,win要有posix和seh之类的标识。具体为啥问一下豆包或者deepseek。下载方式有如下【链接可能会失效找不到了可能,多上网找找,能下载到一些mingw的比较新的版本就行】
https://sourceforge.net/projects/mingw-w64/files/mingw-w64/mingw-w64-release/#
https://github.com/niXman/mingw-builds-binaries/releases
mingw解压到D盘,比如我,然后把D:\minGW11.2.0\mingw64\bin 配置到系统Path,然后cmd运行 gcc --version 和 g++ --version

编译opencv的minGW文件夹包
这里打开D:\cmake3.20.1\bin\cmake-gui.exe 然后配置opencv的source为D:/opencv-4.9.0/opencv/sources,和库的地方为D:/opencv-4.9.0/opencv/build/x64/minGW【刚刚新建那个minGW文件夹】,然后点左下角配置Configure

点了Configure后,按下边这样选:选mingw makefiles,Specify native compilers...

点了Next后,选minGW的gcc.exe和g++.exe,刚刚安装过的,也配置过Path的那个

然后,等待左下角等出现了第一个Configuring done,还要继续点下配置Configure。 有人说上边方框中,可以根据自己想要的去除勾等等,但是我怕出问题,没管。

继续,再次出现了Configuring done, 就可以点生成Generate了。

等最后出现了两个done,Configuring done和 Generating done。 就不管了。 去看看D:\opencv-4.9.0\opencv\build\x64\minGW有东西了没。

-------> 继续,重点才开始:----------------------->
在D:\opencv-4.9.0\opencv\build\x64\minGW文件夹下,打开cmd,开始编译opencv,分别执行两次命令: mingw32-make -j 8 和 mingw32-make install 前者成功后,才能执行后者。



最后应该是出如下的画面,就install成功了。

然后:
(1) 注意把 D:\opencv-4.9.0\opencv\build\x64\minGW\bin 和
D:\opencv-4.9.0\opencv\build\x64\minGW\lib 都配置到系统Path中。
(2)去看看这两个文件夹,应该有一堆opencv编译的minGW类型下的dll库了。
VScode配置和C++ demo
项目下 新建.vscode, 再新建launch.json和tasks.json

launch.json配置如下:
cpp
{
"version": "0.2.0",
"configurations": [
{
"name": "g++ debug OpenCV", // 调试配置名,自定义
"type": "cppvsdbg", // VS Code的调试类型(适配MinGW)
"request": "launch",
"program": "${fileDirname}\\${fileBasenameNoExtension}.exe", // 要运行的exe(和main.cpp同目录的main.exe)
"args": [], // 运行exe时的参数(无则空)
"stopAtEntry": false, // 调试时是否停在main函数入口(false=直接运行)
"cwd": "${fileDirname}", // 工作目录(main.cpp所在目录)
"environment": [],
"externalConsole": true, // 调试时弹出独立的终端(必须,否则摄像头窗口可能卡死)
"MIMode": "gdb",
"miDebuggerPath": "D:\\mingw11.2.0\\mingw64\\bin\\gdb.exe", // 你的gdb路径(MinGW自带)
// "preLaunchTask": "g++ build OpenCV", // 调试前先执行的任务(对应tasks.json的label)
"preLaunchTask": "g++ build OpenCV", // 确保关联修正后的任务
"setupCommands": [
{
"description": "为gdb启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}
tasks.json配置如下:
cpp
{
"version": "2.0.0",
"tasks": [
{
"label": "g++ build OpenCV",
"type": "shell",
"command": "D:\\mingw11.2.0\\mingw64\\bin\\g++.exe", // 统一MinGW路径(和默认任务一致)
"args": [
"-g",
"-std=c++17", // 启用C++17(filesystem需要)
"${file}",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe",
// 头文件路径:确认实际路径是opencv4.9.0还是opencv-4.9.0!
"-I",
"D:\\opencv-4.9.0\\opencv\\build\\include",
// 库路径:修正大小写+统一路径前缀(无-)
"-L",
"D:\\opencv-4.9.0\\opencv\\build\\x64\\minGW\\lib",
// 链接库(必须和lib目录下的文件名一致,如libopencv_core490.dll.a)
"-lopencv_core490",
"-lopencv_highgui490",
"-lopencv_imgcodecs490",
"-lopencv_imgproc490",
"-lopencv_videoio490",
"-lstdc++fs", // 链接filesystem库
"-static-libgcc",
"-static-libstdc++"
],
"group": {
"kind": "build",
"isDefault": true // 设为默认编译任务!
},
"problemMatcher": ["$gcc"],
"detail": "编译OpenCV代码的任务"
},
{
"type": "cppbuild",
"label": "C/C++: g++.exe 生成活动文件",
"command": "D:\\mingw11.2.0\\mingw64\\bin\\g++.exe",
"args": [
"-fdiagnostics-color=always",
"-g",
"${file}",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": ["$gcc"],
"group": {
"kind": "build",
"isDefault": false // 取消默认!
},
"detail": "调试器生成的任务。"
}
]
}
项目目录下。**再新建一个CMakeLists.txt,**内容如下,但是后边我发现好像这个没用上?大模型告诉我的,也建着吧。。。
里边有一句:set(OpenCV_DIR "D:/opencv4.9.0/opencv/build/x64/minGW")
CMakeLists.txt如下:
cpp
cmake_minimum_required(VERSION 3.10.0)
project(hello_opencv LANGUAGES CXX)
# 强制 C++11(OpenCV 4.x 必需)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# 找到 OpenCV(指定你的 OpenCV 编译目录,避免自动找错)
set(OpenCV_DIR "D:/opencv4.9.0/opencv/build/x64/minGW")
find_package(OpenCV REQUIRED)
# 包含 OpenCV 头文件
include_directories(${OpenCV_INCLUDE_DIRS})
# 生成可执行文件(目标名:test11,对应源码 main.cpp)
add_executable(test11 main.cpp)
# 链接 OpenCV 库
target_link_libraries(test11 ${OpenCV_LIBS})
新建一个**main.cpp,**主要是opencv读一张图并显示。
main.cpp如下
cpp
#include <opencv2/opencv.hpp> // 包含OpenCV核心头文件
#include <iostream> // 用于控制台输出
using namespace cv; // 简化OpenCV命名空间
using namespace std;
int main() {
// 1. 读取图片(替换为你的图片路径,支持jpg/png/bmp等格式)
// IMREAD_COLOR:以彩色模式读取(忽略透明度);IMREAD_GRAYSCALE:灰度模式;IMREAD_UNCHANGED:保留透明度
Mat img = imread("0_0.jpg", IMREAD_COLOR);
// 2. 检查图片是否读取成功
if (img.empty()) {
cout << "错误:无法读取图片,请检查路径是否正确!" << endl;
return -1; // 读取失败,退出程序
}
// 3. 创建窗口(可选,imshow也会自动创建,但namedWindow可设置窗口属性)
// WINDOW_NORMAL:允许调整窗口大小;WINDOW_AUTOSIZE:固定大小(默认)
namedWindow("显示图片", WINDOW_NORMAL);
// 4. 显示图片(参数:窗口名称,要显示的Mat对象)
imshow("显示图片", img);
// 5. 等待按键(单位:毫秒,0表示无限等待)
// 必须加此函数,否则窗口会一闪而过
waitKey(0);
// 6. 释放窗口资源(可选,程序结束会自动释放)
destroyAllWindows();
cout << "图片宽度:" << img.cols << " 高度:" << img.rows << endl;
return 0;
}
---- 调试:F5 【我没试过,应该打断点然后执行 问题不大】
---- 编译运行:ctrl+shift+B需要注意:搜狗颜文字 ctrl+shift+B冲突。搜狗S图标-常用设置-更多设置- 按键-"系统功能快捷键"-设置颜文字的勾选去掉。 编译运行成功,终端会出现:
bash
正在执行任务: D:\mingw11.2.0\mingw64\bin\g++.exe -g -std=c++17 D:\0_VScodeProjects\hello_opencv\main.cpp -o D:\0_VScodeProjects\hello_opencv\main.exe -I D:\opencv-4.9.0\opencv\build\include -L D:\opencv-4.9.0\opencv\build\x64\minGW\lib -lopencv_core490 -lopencv_highgui490 -lopencv_imgcodecs490 -lopencv_imgproc490 -lopencv_videoio490 -lstdc++fs -static-libgcc -static-libstdc++
* 终端将被任务重用,按任意键关闭。
项目下会出现: main.exe

终端继续执行:./main.exe
**运行成功:(**有点乱码小问题,但问题不大)

一些问题:
(1)安装包和编译期间最好科学上网;
(2)如果opencv编译失败,那么可能是opencv和mingW和cmake 没有对上版本。 我之前也是问了豆包,豆包给了我本文档的他们的组合,编译出的D:\opencv-4.9.0\opencv\build\x64\minGW就没有问题了。总之,如果对版本没要求,多试试全都用最新版之类的~ 很多人是mingw32-make -j 8 和 mingw32-make install 这两步不成功,也可以单独去解决这两步了再来。
(3)vs-code中task.json之类的要配置opencv的路径正确,多检查!!!,vs-code跑C++基本的编译和运行这些要懂,我基本上是写python,也是踩了好多坑,甚至现在还要学习~
(4)我也是做了整个上述文档的过程,反正目前是成功了的。但不代表每个人照着来会成功,但是步骤基本就这么些了,有问题不放弃多跟大模型交流交流,一定会跑出来的~
参考:
参考了很多csdn和知乎,也都是文档这些事儿,主要参考视频为: https://m.bilibili.com/video/BV1Kt421b7Lo?spm_id_from=333.788.videopod.episodes&vd_source=bf1c62d0e7405278b11583856538ac2b&p=2
