云计算百科
云计算领域专业知识百科平台

使用 Qt5.12.3 与 MinGW64 编译 OpenCV 4.5.4(含 opencv_contrib)完整指南

本文记录了我使用 Qt5.12.3 自带的 MinGW64 编译器与 CMake 成功编译 OpenCV 4.5.4(含 opencv_contrib 扩展模块)的详细过程。适用于需要在 Windows 环境下使用 Qt 和 OpenCV 进行开发的用户。

一、环境准备

1. 软件版本说明

  • Qt:5.12.3(自带 MinGW 7.3.0 64 位)

  • CMake:3.22.3(请确保版本 ≥ 3.10)

  • OpenCV:4.5.4(含 opencv_contrib 扩展模块)

  • 操作系统:Windows 10 64 位

    二、版本选择

    1. protobuf 版本兼容性问题

  • OpenCV 4.5.5 内置的 protobuf 3.19 使用了较新的 C++ 语法特性;

  • Qt 5.12.3 自带的 MinGW 7.3.0(gcc 7.3.0)编译器对这些新语法支持不完善;

  • 编译时会报错:

    error: temporary of non-literal type 'google::protobuf::internal::CallOnceInitializedMutex<std::mutex>' in a constant expression

  • OpenCV 4.5.4 使用的 protobuf 3.5.1 语法更保守,与 MinGW 7.3.0 完全兼容。

    2. OpenGL 链接问题

  • 当启用 WITH_OPENGL 选项时,OpenCV 4.5.5 编译会失败;

  • 出现 OpenGL 函数未定义的链接错误:

    undefined reference to `_imp__glHint@8'
    undefined reference to `
    _imp__glViewport@16'

  • 虽然可能通过手动链接 OpenGL 库解决,但 OpenCV 4.5.4 在该配置下编译更稳定。

    三、CMake 配置步骤

    1. 打开 CMake GUI

  • 设置源代码目录(OpenCV 源码路径)

  • 设置构建目录(建议新建一个 build 或 MinGW64 文件夹)

    2. 配置编译器

    2024-03-19-16-46-45-image.png

  • 点击 Configure,选择:

    • Specify the generator for this project:MinGW Makefiles

    • Specify native compilers

    image.png

  • 填写编译器路径(根据你的 Qt 安装路径调整):

    • C:D:/QT/Qt5.12.3/Tools/mingw730_64/bin/gcc.exe

    • C++:D:/QT/Qt5.12.3/Tools/mingw730_64/bin/g++.exe

    image.png

  • 点击 Finish,等待初始配置完成。

    3. 添加扩展模块

  • 搜索 OPENCV_EXTRA_MODULES_PATH,设置值为:

    D:/OpenCV/opencv454/opencv_contrib-4.5.4/modules

    2024-03-19-17-06-17-image.png

    4. 启用 Qt 与 OpenGL 支持

  • 搜索 WITH_QT,勾选

  • 搜索 WITH_OPENGL,勾选

    5. 重新配置

  • 点击 Configure,直到红色条目全部消失。

  • 最后点击 Generate,生成 Makefile。

2024-03-19-17-08-13-image.png

四、编译与安装

1. 打开终端

进入构建目录(如 D:/OpenCV/opencv454/MinGW64)。

2. 执行编译

mingw32-make -j8

-j8 表示使用 8 线程加速编译,可根据 CPU 核心数调整。

2024-03-19-17-10-11-image.png

3. 执行安装

mingw32-make install

安装完成后,生成的文件会位于 install 目录下。

五、环境配置与验证

1. 添加 PATH 环境变量

将以下路径添加到系统 PATH 环境变量中(建议放在最前面):

D:\\QT\\Qt5.12.3\\5.12.3\\mingw73_64\\bin

2024-03-19-17-35-43-image.png

2. 验证编译成功

编写一个简单的 Qt + OpenCV 测试程序,包含:

#include <opencv2/opencv.hpp>
#include <iostream>

int main() {
cv::Mat img = cv::imread("test.jpg");
if (!img.empty()) {
std::cout << "OpenCV 编译成功!" << std::endl;
}
return 0;
}

编译并运行,确认无错误。

六、常见问题

1. 编译时出现 protobuf 相关错误

说明 OpenCV 版本过高,建议降级至 4.5.4 或更低版本。

2. 链接时出现 OpenGL 相关错误

检查是否已正确安装 Qt 的 OpenGL 组件,或在 CMake 中暂时关闭 WITH_OPENGL。

3. 编译过程中卡顿或内存不足

减少编译线程数,如使用 -j4 或 -j2。

赞(0)
未经允许不得转载:网硕互联帮助中心 » 使用 Qt5.12.3 与 MinGW64 编译 OpenCV 4.5.4(含 opencv_contrib)完整指南
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!