VSCode+MinGW编译纯净版OpenCV4.13.0
一、写在前面为什么要自己编译想要在 VSCode MinGW 环境配置 OpenCV 时发现1.网上大部分预编译库默认带 Qt 依赖解压后用 VSCode 编译代码一运行就弹窗「缺少 Qt5Core.dll/Qt5Gui.dll」2.少数无 Qt 版本要么版本过旧低于 4.0要么适配的 MinGW 版本和我用的 GCC13.1 不兼容3.官方源码编译看似复杂但只要避坑其实能得到「完全适配自己环境、无冗余依赖」的纯净版本。所以干脆自己编译了 OpenCV 4.13.0移除 Qt 依赖、保留 Win32 原生 UI适配 MinGW GCC13.1VSCode 直接配置可用现在把编译步骤 预编译库分享给大家二、编译环境说明和我一致可直接用预编译库但为了避免其他麻烦最好自己编译一遍我最后会附上我的编译完版本MinGW13.1.0版本opencv4.13.0源码cmake安装包三、cmake编译1. 准备工作下载文件 路径规范下载 OpenCV 4.13.0 源码官方 GitHub解压后路径无空格、无中文下载 MinGW-w64Source Code - mingw-w64(安装路径示例D:/c/mingw64下载 CMake-gui官网Download CMake官网关键避坑所有路径必须无空格、无中文比如D:/c/opencv-4.13.0正确D:/OpenCV 4.13.0错误空格导致编译失败。MinGW-w64的环境配置网上很多不再赘述但是大家不要忘记配置2. CMake 配置最关键关闭 Qt 依赖打开 CMake填写路径源码路径D:/c/opencv-4.13.0/opencv-4.13.0解压后的源码根目录opencv-4.13.0内部如下图有的时候解压完不一定叫opencv-4.13.0看情况填写最好重新建一个文件夹原来路径容易有空格之类的东西编译路径D:/c/opencv-4.13.0/build新建空文件夹build用于存放编译产物点击「Configure」弹出窗口选择1.GeneratorMinGW Makefiles2.勾选「Specify native compilers」3.C 编译器D:/c/mingw64/bin/gcc.exe4.C 编译器D:/c/mingw64/bin/c.exe(或者g5.点击「Finish」等待第一次配置会下载 FFMPEG 等依赖耐心等关键配置解决 Qt 报错 精简编译取消勾选 WITH_QT核心关闭 Qt 依赖避免 dll 缺失勾选 WITH_WIN32UI启用 Windows 原生 UI替代 Qt 显示图片 / 摄像头勾选 BUILD_opencv_world生成一个整合所有模块的opencv_world4130.dll方便配置取消勾选 BUILD_TESTS、BUILD_EXAMPLES跳过测试和示例加速编译CMAKE_BUILD_TYPE 选择 Release发布版体积小、速度快CMAKE_INSTALL_PREFIX 保持默认编译后会生成install文件夹就是预编译库再次点击「Configure」直到底部显示「Configuring done」无红色报错警告可忽略点击「Generate」直到显示「Generating done」CMake 配置完成3. 命令行编译3. 命令行编译好了后快捷键winR)进入cmd或者搜索命令进入后再后面输入D:进入D文件夹再输入cd 你的build文件夹在D文件夹中的地址再输入mingw32-make -j6开始编译编译完成界面再输入mingw32-make install下载、完成后build里的install就是需要的编译完的opencv里面是这样四、vscode配置1. 准备工作整理编译产物编译完成后build/install目录结构如下install/ ├── bin/ # 动态链接库 .dll 文件 ├── include/ # 头文件 │ └── opencv2/ # OpenCV 头文件目录 ├── lib/ # 静态库 .a 文件 └── x64/ # 可能存在的架构目录准备一个opencv的文件夹把install放进去将install/bin添加到高级系统设置的用户变量的path中点进去填入地址前面填自己保存的文件夹后面一定时框框里的2. VSCode 项目配置2.1 创建项目文件夹结构构建自己的项目在项目里创建.vscode文件夹my_opencv_project/ ├── .vscode/ │ ├── c_cpp_properties.json # IntelliSense 配置 │ ├── tasks.json # 编译任务配置 │ └── launch.json # 调试配置可选 ├── main.cpp # 测试代码 └── opencv_world4130.dll # 复制过来的 dll 文件注意以下配置有关地址的根据情况填写自己的2.2 配置 c_cpp_properties.json创建.vscode/c_cpp_properties.json{ configurations: [ { name: windows-gcc-x64, includePath: [ ${workspaceFolder}/**, D:/c/opencv/install/include // 生成的install头文件路径 ], defines: [], compilerPath: D:/c/mingw64/bin/gcc.exe, cStandard: c17, cppStandard: gnu17, intelliSenseMode: windows-gcc-x64 } ], version: 4 }2.3 配置 tasks.json创建.vscode/tasks.json{ version: 2.0.0, tasks: [ { type: shell, label: build, command: D:/c/mingw64/bin/g.exe, args: [ -g, ${file}, -o, ${fileDirname}/${fileBasenameNoExtension}.exe, -ID:/c/opencv/install/include, // 头文件路径 -LD:/c/opencv/install/x64/mingw/lib, // lib路径 -lopencv_world4130 // 仅需这一行所有模块都包含 ], group: {kind: build, isDefault: true}, problemMatcher: [$gcc], options: {cwd: D:/c/mingw64/bin} } ] }2.4 配置 launch.json调试用可选创建.vscode/launch.json{ version: 0.2.0, configurations: [ { name: Debug, type: cppdbg, request: launch, program: ${fileDirname}/${fileBasenameNoExtension}.exe, args: [], stopAtEntry: false, cwd: ${fileDirname}, environment: [], externalConsole: true, MIMode: gdb, miDebuggerPath: D:/c/mingw64/bin/gdb.exe, setupCommands: [ { description: Enable pretty-printing for gdb, text: -enable-pretty-printing, ignoreFailures: true } ], preLaunchTask: build }, { name: C/C Runner: Debug Session, type: cppdbg, request: launch, args: [], stopAtEntry: false, externalConsole: true, cwd: d:/c/opcv_vscode, program: d:/c/opcv_vscode/build/Debug/outDebug, MIMode: gdb, miDebuggerPath: D:/c/mingw64/bin/gdb.exe, setupCommands: [ { description: Enable pretty-printing for gdb, text: -enable-pretty-printing, ignoreFailures: true } ] } ] }之后要创建项目直接把.vscode的文件夹复制进去就行结构如图五测试代码创建 test.cpp#include opencv2/opencv.hpp #include iostream using namespace cv; using namespace std; int main() { // 打开默认摄像头0为笔记本内置摄像头外接摄像头可试1 VideoCapture cap(0); // 检查摄像头是否打开成功 if (!cap.isOpened()) { cout 摄像头打开失败请检查摄像头是否连接或被占用 endl; return -1; } cout 摄像头打开成功按 q 键退出 endl; Mat frame; // 存储摄像头帧画面 while (true) { cap frame; // 读取摄像头画面 // 检查画面是否读取成功 if (frame.empty()) { cout 画面读取失败 endl; break; } // 显示摄像头画面窗口名为“摄像头实时画面” imshow(摄像头实时画面, frame); // 按 q 键退出等待1毫秒检测按键 if (waitKey(1) q) { cout 退出程序... endl; break; } } // 释放摄像头资源 关闭所有窗口 cap.release(); destroyAllWindows(); return 0; }点击F5运行可以出现摄像头拍摄场景先出现命令窗口乱码是代码问题不重要出现后说明配置成功终端如图六、文件资源说明通过网盘分享的文件souce.zip链接: https://pan.baidu.com/s/1cdDa5-R69jSRqeaGXkI8EQ 提取码: jsbs--来自百度网盘超级会员v4的分享1.mingw64版本13.1.02.install编译完的opencv根据我的版本编译3.opencv-opencv-2e1f8da未编译源码版本OpenCV 4.13.04.cmake-4.3.1-windows-x86_64 (1)cmake安装包