QT配置opencv并打包发布

QT配置opencv

(一)软件环境

Windows10
QT-5.10.1
CMake-3.18.4
OpenCV-3.4.0(建议用3系列)
Depends(下载地址:http://www.dependencywalker.com/)
Enigma Virtual Box(下载地址:https://enigmaprotector.com/en/downloads.html)

(二)配置OpenCV的MinGW版

由于Opencv没有编译好的MinGW版,因此需要利用Cmake进行编译。
安装好后打开QtCreator,在工具 -> 选项 -> 构建和运行 -> 构建套件,选中Desktop Qt 5.10.1 MinGW 32bit,设为默认,OK。
添加 CMake、MinGW 到环境变量:

D:\QT\Qt5.10.1\Tools\mingw530_32\bin
D:\QT\Qt5.10.1\5.10.1\mingw53_32\bin
D:\cmake-3.18.4-win64-x64\bin

(三)配置CMake

打开cmake-gui.exe

打开 cmake-gui,设置源码和生成路径:

Where is the source code: D:/opencv3.4/opencv/sources
Where to build the binaries: D:/opencv3.4/opencv/build-QT

点击 Configure,设置编译器
Specify the generator for this project: MinGW Makefiles
Specify native compilers
Next
Compilers C: D:\QT\Qt5.10.1\Tools\mingw530_32\bin\gcc.exe
Compilers C++: D:\QT\Qt5.10.1\Tools\mingw530_32\bin\g++.exe
Finish

编译配置:
勾选 WITH_QT
勾选 WITH_OPENGL
点击 Configure,再次配置:
不勾选 WITH_IPP
设置 QT_MAKE_EXECUTABLE 为 D:\QT\Qt5.10.1\5.10.1\mingw53_32\bin\qmake.exe
设置 Qt5Concurrent_DIR 为 D:\QT\Qt5.10.1\5.10.1\mingw53_32\lib\cmake\Qt5Concurrent
设置 Qt5Core_DIR 为 D:\QT\Qt5.10.1\5.10.1\mingw53_32\lib\cmake\Qt5Core
设置 Qt5Gui_DIR 为 D:\QT\Qt5.10.1\5.10.1\mingw53_32\lib\cmake\Qt5Gui
设置 Qt5Test_DIR 为 D:\QT\Qt5.10.1\5.10.1\mingw53_32\lib\cmake\Qt5Test
设置 Qt5Widgets_DIR 为 D:\QT\Qt5.10.1\5.10.1\mingw53_32\lib\cmake\Qt5Widgets
设置 Qt5OpenGL_DIR 为 D:\QT\Qt5.10.1\5.10.1\mingw53_32\lib\cmake\Qt5OpenGL
设置 CMAKE_BUILD_TYPE 为 Release 或者 RelWithDebInfo

【注:若没有QT_MAKE_EXECUTABLE,可以自己Add Entry,再将qmake的路径添加进去】

点击 Generate 生成 Makefile

(四)编译 OpenCV

打开终端进行编译:cd D:\opencv3.4\opencv\build-QT

输入【mingw32-make】命令,若没有错误,则再次输入【mingw32-make install】,完成安装。

添加新生成的bin到Path环境变量:把编译后,目标目录下的bin目录路径,即
D:\opencv3.4\opencv\build-QT\bin 添加到Path环境变量中。
环境变量

(五)编译opencv常见错误

  • RC错误
    错误1
    【解决】
    在 cmake-gui 编译配置中:
    不勾选 ENABLE_PRECOMPILED_HEADERS
    然后重新 Configure-Generate-mingw32-make

  • sprintf_instead_use_StringCbPrintfA_or_StringCchPrintfA 错误
    错误2
    【解决】
    修改D:\opencv3.4\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

  • identifier ‘nullptr’ is a keyword in C++11 错误
    错误3
    【解决】
    在 cmake-gui 编译配置中:
    勾选 ENABLE_CXX11
    然后重新 Configure-Generate-mingw32-make

  • Ananconoda冲突
    [98%] Built target gen_opencv_python_source
    Scanning dependencies of target opencv_python3
    [98%] Building CXX object modules/python3/CMakeFiles/opencv_python3.dir/__/src2/cv2.cpp.obj
    [ 98%] Linking CXX shared module …\lib\python3\cv2.cp37-win_amd64.pyd
    F:/Anaconda/python37.dll: file not recognized: File format not recognized
    collect2.exe: error: ld returned 1 exit status
    modules\python3\CMakeFiles\opencv_python3.dir\build.make: 100:recipe for target ‘lib/python3/cv2.cp37-win_amd64.pyd’ failed
    mingw32-make[2]: *** [lib/python3/cv2.cp37-win_amd64.pyd] Error 1
    CMakeFiles\Makefile2:6798: recipe for target ‘modules/python3/CMakeFiles/opencv_python3.dir/all’ failed
    mingw32-make[1]: *** [modules/python3/CMakeFiles/opencv_python3.dir/all] Error 2
    Makefile:161: recipe for target ‘all’ failed
    mingw32-make: *** [all] Error 2
    【解决】
    由于本人之前电脑装了Anaconda,所以在cmake进行configure之后总是自动检测到python路径并且为其自动build了python的opencv链接,所以后面我取消选中一切关于python的选项。
    错误4

(六)配置Qt中的OpenCV

新建项目后,在.pro文件中的底部,添加如下内容:

INCLUDEPATH += D:\opencv3.4\opencv\build\include
D:\opencv3.4\opencv\build\include\opencv
D:\opencv3.4\opencv\build\include\opencv2

LIBS += D:\opencv3.4\opencv\build-QT\lib\libopencv_*.a

配置Qt中的OpenCV
到此为止,Qt和opencv配置成功。以后在Qt中编写opencv程序,每次新建项目时,都要在.pro文件中添加上一步的内容。

打包发布

step1
(1)用Qt creator 打开项目文件,然后release,生产release版的可执行文件,同时查看编译工具,后续需要用统一编译器才不会出错。
step2
(2)将文件夹
build-Japan-CrackDetection-Program-Desktop_Qt_5_10_1_MinGW_32bit-Release–>release–>Japan-CrackDetection-Program.exe拷贝到一个新建文件夹Japan中(该文件夹中不能有中文路径)。
从Windows图标找到Qt软件,选择和第一步图中3里面一样的编译器。
step3
(3)打开后,转至Japan文件夹,输入windeployqt Japan-CrackDetection-Program.exe
step4
(4)运行后的Japan文件夹添加了很多依赖项。
step5
(5)直接把Japan-CrackDetection-Program.exe拖到Depends软件中即可(在Depends中只显示依赖项的一级目录)。

step6
(6)可以看到我们使用了opencv的两个依赖项,分别是libopencv_core340.dll和libopencv_imgproc340.dll。下一步把这些依赖从opncvbuild(也就是在对Qt配置opencv时用cmake对opencv编译之后形成的文件)在bin中将这两个依赖项加入到Japan中即可。

(7)打开Enigma Virtual Box软件:
step7

  1. 点击Browse选择Japan里面的.exe文件
  2. 点击Add将整个Japan文件加进去(第二个选项)
  3. 点击Files Options
    step8
  4. 点击 Process,运行完成后点击run就可以运行程序了,同时你的test文件夹里面多了一个Japan-CrackDetection-Program_boxed.exe文件,这个就可以直接运行了。
  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据引用内容,配置Qt使用OpenCV的步骤如下: 1. 首先,需要在.pro文件中添加OpenCV的头文件和库文件路径。例如,在INCLUDEPATH中添加头文件路径,LIBS中添加库文件路径。注意,路径应该使用反斜杠而不是斜杠。 2. 头文件路径可以通过引用\[1\]中的示例进行设置,例如:INCLUDEPATH += H:\Qt\opencv3.4.0\OpenCV-MinGW-Build-OpenCV-3.4.5\include。 3. 库文件路径也可以通过引用\[1\]中的示例进行设置,例如:LIBS += H:\Qt\opencv3.4.0\OpenCV-MinGW-Build-OpenCV-3.4.5\x86\mingw\bin\libopencv_*.dll。 4. 另外,还可以在Qt的项目设置中指定头文件和库文件的路径。例如,可以在项目设置中的"头文件目录"中添加头文件路径,"库目录"中添加库文件路径。这可以参考引用\[2\]中的示例。 5. 如果在编译过程中遇到问题,可以根据引用\[3\]中的解决方法进行修复。例如,修改代码中的nullptr为null,或者修改特定文件中的代码。 总结起来,配置Qt使用OpenCV的步骤包括添加头文件和库文件路径,并根据需要进行一些修复。希望这些信息对您有帮助。 #### 引用[.reference_title] - *1* [Qt配置OpenCV教程,无需复杂的编译过程,(详细版)](https://blog.csdn.net/qq_42027706/article/details/122210273)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [【QtQt配置OpenCV](https://blog.csdn.net/qq_44859533/article/details/126708386)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值