OpenCV使用CMake和MinGW的编译安装及其在Qt配置运行_qtopencv mingw编译的release

img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新

需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)

如果你需要这些资料,可以戳这里获取

  • 勾选 WITH_QT
  • 勾选 WITH_OPENGL

点击 Configure,再次配置:

  • 不勾选 WITH_IPP
  • 设置 QT_MAKE_EXECUTABLEE:\Qt\Qt5.9.3\5.9.3\mingw53_32\bin\qmake.exe
  • 设置 Qt5Concurrent_DIRE:\Qt\Qt5.9.3\5.9.3\mingw53_32\lib\cmake\Qt5Concurrent
  • 设置 Qt5Core_DIRE:\Qt\Qt5.9.3\5.9.3\mingw53_32\lib\cmake\Qt5Core
  • 设置 Qt5Gui_DIRE:\Qt\Qt5.9.3\5.9.3\mingw53_32\lib\cmake\Qt5Gui
  • 设置 Qt5Test_DIRE:\Qt\Qt5.9.3\5.9.3\mingw53_32\lib\cmake\Qt5Test
  • 设置 Qt5Widgets_DIRE:\Qt\Qt5.9.3\5.9.3\mingw53_32\lib\cmake\Qt5Widgets
  • 设置 Qt5OpenGL_DIRE:\Qt\Qt5.9.3\5.9.3\mingw53_32\lib\cmake\Qt5OpenGL
  • 设置 CMAKE_BUILD_TYPERelease 或者 RelWithDebInfo

点击 Generate 生成 Makefile

OpenCVCMakeGenerate

编译 OpenCV

打开终端进行编译:(-j 是使用 8 个线程进行编译,请根据你的计算机配置合理设置线程数)

E:
cd E:\OpenCV_3.3.1\opencv-build
mingw32-make -j 8
mingw32-make install

如果 mingw32-make -j 8 遇到错误,请看下面的 编译 OpenCV 常见错误,否则执行 mingw32-make install,完成安装。

编译 OpenCV 常见错误

0. 多线程编译错误信息不明确
表现

如果使用了多线程编译,导致错误,但是错误信息不明确,如:

Makefile:161: recipe for target 'all' failed
mingw32-make: *** [all] Error 2

MakeOpenCV_cap_dshow

解决

使用单线程编译:

mingw32-make

以查看详细的错误提示,再根据具体情况解决。

1. RC 错误
表现
... windres.exe: unknown option -- W ...

或者

FORMAT is one of rc, res, or coff, and is deduced from the file name
extension if not specified.  A single file name is an input file.
No input-file is stdin, default rc.  No output-file is stdout, default rc.

MakeOpenCVRCError

解决

在 cmake-gui 编译配置中:

  • 不勾选 ENABLE_PRECOMPILED_HEADERS

然后重新 Configure-Generate-mingw32-make

2. sprintf_instead_use_StringCbPrintfA_or_StringCchPrintfA 错误
表现
...opencv/sources/modules/videoio/src/cap_dshow.cpp...
... 'sprintf_instead_use_StringCbPrintfA_or_StringCchPrintfA' was not declared in this scope ...

或者

Makefile:161: recipe for target 'all' failed
mingw32-make: *** [all] Error 2

MakeOpenCV_cap_dshow

解决

修改E:\OpenCV_3.3.1\opencv\sources\modules\videoio\src\cap_dshow.cpp文件,在#include "DShow.h"这行的上面加一行#define NO_DSHOW_STRSAFE,如:

#define NO_DSHOW_STRSAFE
#include "DShow.h"

然后重新 Configure-Generate-mingw32-make

3. identifier ‘nullptr’ is a keyword in C++11 错误【2018年3月2日编译OpenCV 3.4.1时遇到并解决】
表现
D:\opencv-3.4.1\opencv-3.4.1\3rdparty\protobuf\src\google\protobuf\stubs\io_win32.cc:94:3: warning: identifier 'nullptr' is a keyword in C++11 [-Wc++0x-compat]
   return s == nullptr || *s == 0;
   ^
D:\opencv-3.4.1\opencv-3.4.1\3rdparty\protobuf\src\google\protobuf\stubs\io_win32.cc: In function 'bool google::protobuf::internal::win32::{anonymous}::null_or_empty(const char_type*)':
D:\opencv-3.4.1\opencv-3.4.1\3rdparty\protobuf\src\google\protobuf\stubs\io_win32.cc:94:15: error: 'nullptr' was not declared in this scope
   return s == nullptr || *s == 0;
               ^
3rdparty\protobuf\CMakeFiles\libprotobuf.dir\build.make:412: recipe for target '3rdparty/protobuf/CMakeFiles/libprotobuf.dir/src/google/protobuf/stubs/io_win32.cc.obj' failed
mingw32-make[2]: *** [3rdparty/protobuf/CMakeFiles/libprotobuf.dir/src/google/protobuf/stubs/io_win32.cc.obj] Error 1
CMakeFiles\Makefile2:710: recipe for target '3rdparty/protobuf/CMakeFiles/libprotobuf.dir/all' failed
mingw32-make[1]: *** [3rdparty/protobuf/CMakeFiles/libprotobuf.dir/all] Error 2
Makefile:161: recipe for target 'all' failed
mingw32-make: *** [all] Error 2

MakeOpenCV_nullptr_Error

解决

在 cmake-gui 编译配置中:

  • 勾选 ENABLE_CXX11

然后重新 Configure-Generate-mingw32-make

4. ‘chmod’ 不是内部或外部命令,也不是可运行的程序 或批处理文件 | ‘chmod’ is not recognized as an internal or external command【2019年9月2日编译OpenCV 3.4.7时遇到并解决】
表现
'chmod' 不是内部或外部命令,也不是可运行的程序 或批处理文件

MakeOpenCV_chmod_Error

原因

E:\opencv-3.4.7\opencv-3.4.7\cmake\OpenCVPCHSupport.cmake 中使用了 chmod 命令,然而 Windows 下不支持 chmod 命令,因此报错。

解决

判断系统是否 Windows,若是 Windows,则不使用 COMMAND chmod +x "${_pch_generate_file_cmd}",如我提的 PR 中的修改:fix ‘chmod’ is not recognized as an internal or external command in Windows #15433

修改后再重新 Configure-Generate-mingw32-make

5. test_common.hpp: No such file or directory【2019年9月2日编译OpenCV 3.4.7时遇到并解决】
表现
In file included from <command-line>:0:0:
E:/opencv-3.4.7/opencv-3.4.7-build/modules/dnn/test_precomp.hpp:50:10: fatal error: test_common.hpp: No such file or directory
 #include "test_common.hpp"
          ^~~~~~~~~~~~~~~~~
compilation terminated.

MakeOpenCV_test_common_Error

解决

方法一:(issues/15381

在 cmake-gui 编译配置中:

  • 不勾选 ENABLE_PRECOMPILED_HEADERS(禁用预编译头)

然后重新 Configure-Generate-mingw32-make

方法二:

E:\opencv-3.4.7\opencv-3.4.7\modules\dnn\test\test_common.hpp 复制到 E:\opencv-3.4.7\opencv-3.4.7-build\modules\dnn\ 目录下

然后继续 mingw32-make

添加 OpenCV 编译的库到环境变量

  • 为系统变量 Path 添加 E:\OpenCV_3.3.1\opencv-build\install\x86\mingw\bin

新建 OpenCV 的 Qt 项目

.pro 文件里面添加:

win32 {
INCLUDEPATH += E:\OpenCV_3.3.1\opencv-build\install\include
LIBS += E:\OpenCV_3.3.1\opencv-build\install\x86\mingw\bin\libopencv_*.dll
}

img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新

需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)

如果你需要这些资料,可以戳这里获取

5892612470)]
[外链图片转存中…(img-usAjjmNH-1715892612470)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新

需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)

如果你需要这些资料,可以戳这里获取

  • 14
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Qt是一个跨平台的C++应用程序开发框架,MinGW是一个基于GNU工具集的Windows开发环境,OpenCV是一个计算机视觉库,版本4.1在QtMinGW环境中的使用方法如下: 首先,确保已经安装QtMinGW,并配置好相关环境变量。 然后,下载OpenCV 4.1版本的源代码,并解压到指定文件夹中。 接下来,使用CMake进行配置编译OpenCV。打开CMake GUI,设置源代码路径和编译输出路径,点击Configure进行配置。 在配置过程中,选择MinGW Makefiles作为生成器,并勾选"WITH_QT"选项,这样编译时将会生成Qt相关的代码。 配置完成后,点击Generate生成Makefile。然后打开命令行窗口,进入编译输出路径,执行"mingw32-make"命令进行编译编译完成后,执行"mingw32-make install"命令进行安装编译安装完成后,在Qt项目中添加OpenCV的头文件路径和库文件路径。打开Qt项目的.pro文件,添加以下代码: ``` INCLUDEPATH += /path/to/opencv/include LIBS += -L/path/to/opencv/lib -lopencv_core410 -lopencv_highgui410 ``` 其中,/path/to/opencvOpenCV安装的路径,根据实际情况进行修改。 最后,可以在Qt代码中引入OpenCV的头文件,使用OpenCV提供的函数和类进行图像处理和计算机视觉相关的操作。 总之,使用QtMinGWOpenCV 4.1进行开发,需要先配置编译OpenCV,并将生成的库文件配置Qt项目中,然后就可以在Qt使用OpenCV相关功能了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值