Qt | mingw+cmake编译Opencv4.1.2

OpenCV

获取 OpenCV

从官网下载 openCV 在本指南中,使用版本4.1.2启动 opencv-3.2.0-vc14.exe 并让它解压到 d: 。现在文件夹 d:opencv _4.1.2_Sources已创建。

将 minGW 添加到 windows PATH 变量

打开控制面板, 
系统和安全, 
系统, 
高级系统设置,
环境变量,
系统变量,
变量名称:路径
变量值:;E:QtToolsmingw810_32in
PS:64位的则添加
E:QtToolsmingw810_64in

编译 OpenCV

启动 cmake-gui.exe 然后选择以下设置:

 源代码在哪里:D:/opencv_4.1.2_Sources/opencv-4.1.2
 在哪里构建二进制文件:D:/opencv_4.1.2_Sources/opencv-4.1.2/build

 

然后点击Configure,让cmake创建build目录,选择如下设置:

 为此项目指定生成器:MinGW Makefiles
 指定本机编译器,下一步
 编译器 C:E:QtToolsmingw810_32ingcc.exe
 编译器 C++:E:QtToolsmingw810_32ing++.exe
 结束
 选中复选框 [X]WITH_QT
 选中复选框 [X]WITH_OPENGL
将D:opencv_4.1.2_Sourcesopencv-4.1.2CMakeLists.txt打开添加如下代码,保存后退出
将 Qt5_DIR 设置为E:/Qt/5.15.1/mingw81_32/lib/cmake/Qt5
 set(CMAKE_PREFIX_PATH "E:/Qt/5.15.1/mingw81_32/lib/cmake/Qt5")
PS:QT的版本看自己的安装情况而定
 取消选中复选框 []ENABLE_PRECOMPILED_HEADERS

然后再次点击配置。

 将 QT_MAKE_EXECUTABLE 设置为 D:Qt5.9mingw53_32inqmake.exe
 将 Qt5Concurrent_DIR 设置为 D:Qt5.9mingw53_32libcmakeQt5Concurrent
 将 Qt5Core_DIR 设置为 D:Qt5.9mingw53_32libcmakeQt5Core
 将 Qt5Gui_DIR 设置为 D:Qt5.9mingw53_32libcmakeQt5Gui
 将 Qt5Test_DIR 设置为 D:Qt5.9mingw53_32libcmakeQt5Test
 将 Qt5Widgets_DIR 设置为 D:Qt5.9mingw53_32libcmakeQt5Widgets
 将 Qt5OpenGL_DIR 设置为 D:Qt5.9mingw53_32libcmakeQt5OpenGL
 将 CMAKE_BUILD_TYPE 设置为 Release
PS:此时生成的库为分散的,并不是一个dll,引入的时候不方便,可以勾选BUILD_opencv_world将动态库打包成一个

然后再次点击配置 然后点击生成

接下来打开cmd,输入以下命令。为了加快编译速度,-j 标志可用于同时运行多个编译作业。在 8 核 CPU 上,您可以将其设置为 8 或更高,以便使用所有内核。在具有 8GB 内存的 i7-3770@3.4GHz 核心上,编译大约需要 6 分钟。

 d:
 cd d:
 cd opencv-build  
 mingw32-make -j 8
 mingw32-make install
 
 

如果在文件 opencv/sources/modules/videoio/src/cap_dshow.cpp 中出现以下错误:'sprintf_instead_use_StringCbPrintfA_or_StringCchPrintfA' 未在此范围内声明...

试试这个:把下面这行:#define NO_DSHOW_STRSAFE,在行之前:#include "DShow.h"

如果您有错误:'nullptr' 未在此范围内声明..

试试这个:在 cmake 中选中 ENABLE_CXX11 框

如果在文件 modulesvideoiosrccap_msmf.cpp 中出现错误: using invalid field '{anonymous}::ComPtr<T>::p'..

试试这个:在 cmake 中取消选中 WITH_MSMF

原文地址:https://www.cnblogs.com/zhxzh/p/14972082.html