前言
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;
}