一、写在前面:为什么要自己编译?​

想要在 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.1,VSCode 直接配置可用,现在把编译步骤 + 预编译库分享给大家~

二、编译环境说明

和我一致可直接用预编译库,但为了避免其他麻烦最好自己编译一遍,我最后会附上我的编译完版本,MinGW13.1.0版本,opencv4.13.0源码,cmake安装包

三、cmake编译

1. 准备工作:下载文件 + 路径规范​

        下载 OpenCV 4.13.0 源码:官方 GitHub(解压后路径无空格、无中文!);​

        下载 MinGW-w64:Source 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.Generator:MinGW Makefiles;​

2.勾选「Specify native compilers」;​

3.C 编译器:D:/c++/mingw64/bin/gcc.exe;​

4.C++ 编译器:D:/c++/mingw64/bin/c++.exe;(或者g++)​

5.点击「Finish」,等待第一次配置(会下载 FFMPEG 等依赖,耐心等);​

关键配置(解决 Qt 报错 + 精简编译):

  1. 取消勾选 WITH_QT(核心!关闭 Qt 依赖,避免 dll 缺失);​
  2. 勾选 WITH_WIN32UI(启用 Windows 原生 UI,替代 Qt 显示图片 / 摄像头);​
  3. 勾选 BUILD_opencv_world(生成一个整合所有模块的opencv_world4130.dll,方便配置);​
  4. 取消勾选 BUILD_TESTS、BUILD_EXAMPLES(跳过测试和示例,加速编译);​
  5. CMAKE_BUILD_TYPE 选择 Release(发布版,体积小、速度快);​
  6. CMAKE_INSTALL_PREFIX 保持默认(编译后会生成install文件夹,就是预编译库);​再次点击「Configure」,直到底部显示「Configuring done」(无红色报错,警告可忽略);​
  7. 点击「Generate」,直到显示「Generating done」,CMake 配置完成3. 命令行编译

3. 命令行编译

好了后快捷键(win+R)进入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": "gnu++17",

      "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.0

2.install

编译完的opencv,根据我的版本编译

3.opencv-opencv-2e1f8da

未编译源码

版本:OpenCV 4.13.0

4.cmake-4.3.1-windows-x86_64 (1)

cmake安装包

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐