采用QT下MingW编译opencv4.8.1

前言

Windows上安装QT,如果采用的mingW进行程序编译的,那么调用Windows下安装版本的opencv就无法调用。因为Windows下直接安装的opencv使用Visual

Studio进行编译的。所以,这时候要继续调用的话,就需要对opencv源码采用mingW进行编译生成。

一、opencv4.8.1源码的下载

可以到csdn上下载

二、cmake-gui生成mingw工程 {#二cmake-gui生成mingw工程 .unnumbered}

建立的build_mingw文件夹,并打开:

选定Generate:

整体的设定如下:

但是出现了如下的错误:

发生错误的原因是:

注意:

那么,我们先找到这个exe的路径。

通过扫描找到了这个路径:

然后,将这个路径放入到系统Path当中。

然后通过cmd窗口,查看一些关键的命令是否可以使用,如下图:

应该可以使用了,然后继续进行CMake.

关闭cmake-gui,重新打开,重新点击"Configure",出现如下的界面:

说明Configure已经完成了。

然后继续点击"Generate":

可能或许要点击2次

然后,可以看到Generate也完毕了,如下图:

三、mingw32-make编译生成 {#三mingw32-make编译生成 .unnumbered}

然后,采用命令行的方式进行编译,如下图:

(输入命令:mingw32-make -j8)

生成中断,出现了错误,如下图:

询问了大模型,说是video模块中涉及奥比中光的模块无法编译通过。

需要重新configure,将如下的几个勾去掉:

打勾去掉后,重新configure和Generate

这样重新进行生成之后,如下图:

感觉虽然生成了100%但是还是有错误。

把python相关的3个勾也去掉,如下图:

再重新Configure和Generate。

然后再重新:

Mingw32-make clean

Mingw32-make -j8

这样操作以后就可以完全的成功生成了,如下图:

四、install

然后就是运行:mingw32-make install

如下图:

这样就install完毕了。

安装完毕后的目录结构是这样的:

五、测试用例

CMakeLists.txt的内容:

cmake_minimum_required(VERSION 3.19)

project(console_opencv412_cmake_test LANGUAGES CXX)

设置您用 MinGW 编译的 OpenCV 的安装路径

set(OpenCV_DIR "D:/opencv-4.8.1/build_mingw/install")

或者如果 install 目录下有 lib 或 share/OpenCV

目录,可以更具体地指向它们

set(OpenCV_DIR "D:/opencv-4.8.1/build_mingw/install/lib")

或者 set(OpenCV_DIR

"D:/opencv-4.8.1/build_mingw/install/share/OpenCV")

find_package(OpenCV REQUIRED)

find_package(Qt6 6.5 REQUIRED COMPONENTS Core)

qt_standard_project_setup()

qt_add_executable(console_opencv412_cmake_test

main.cpp

)

添加 OpenCV 头文件路径

target_include_directories(console_opencv412_cmake_test

PRIVATE

${OpenCV_INCLUDE_DIRS}

)

链接 OpenCV 库 - 使用 find_package 提供的变量

target_link_libraries(console_opencv412_cmake_test

PRIVATE

Qt::Core

${OpenCV_LIBS} # 使用 OpenCV 包提供的库列表

)

对于 MinGW 编译的 OpenCV,通常不需要区分 Debug/Release 版本

因为 MinGW 通常不会在库名后添加 'd' 后缀

添加 OpenCV 的 DLL 路径到 PATH,方便调试和运行

include(GNUInstallDirs)

install(TARGETS console_opencv412_cmake_test

BUNDLE DESTINATION .

RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}

LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}

)

cpp 复制代码
//Main.cpp:

#include \<QDebug\>

#include \<opencv2/opencv.hpp\>

int main(int argc, char \*argv\[\])

{

//QCoreApplication app(argc, argv);

qDebug() \<\< "OpenCV version:" \<\< CV_VERSION;

// 加载图片

cv::Mat image =
cv::imread("D:/zc_2025/qt_src/console_opencv412_cmake_test/watermelon.png");
// 替换为您的图片路径

// 检查图片是否成功加载

if(image.empty()) {

qDebug() \<\< "无法加载图片,请检查路径是否正确";

return -1;

}

qDebug() \<\< "图片信息:";

qDebug() \<\< "尺寸:" \<\< image.cols \<\< "x" \<\< image.rows;

qDebug() \<\< "通道数:" \<\< image.channels();

qDebug() \<\< "类型:" \<\< image.type();

// 您还可以使用OpenCV显示图像窗口

cv::imshow("Loaded Image", image);

cv::waitKey(0); // 等待按键

// 这里可以添加更多的OpenCV功能

return 0;

}
相关推荐
赫瑞2 小时前
Java中的日期类
java·开发语言
吕司2 小时前
Linux线程同步
linux·服务器·开发语言
神の愛2 小时前
java日志功能
java·开发语言·前端
Reuuse2 小时前
基于 C++ 的网页五子棋对战项目实战
开发语言·c++
不会写DN2 小时前
如何设计应用层 ACK 来补充 TCP 的不足?
开发语言·网络·数据库·网络协议·tcp/ip·golang
xyq20242 小时前
PHP MySQL 简介
开发语言
我能坚持多久2 小时前
利用Date类的实现对知识巩固与自省
开发语言·c++
Rabitebla2 小时前
C++ 入门基础:从 C 到 C++ 的第一步
c语言·开发语言·c++
西魏陶渊明2 小时前
解决异步挑战:Reactor Context 实现响应式上下文传递
开发语言·python