QT+opencv源码编译

本文详细介绍了如何在QT5.12.7环境中使用cmake3.22.0和opencv4.5.4进行编译,包括下载、配置环境变量、编译步骤以及在QT项目中集成OpenCV的详细步骤,还提供了ffmpeg下载和编译问题的解决方案。
摘要由CSDN通过智能技术生成

欢迎入群共同学习交流
时间记录:2024/1/20

一、版本介绍

QT5.12.7+cmake3.22.0+opencv4.5.4

二、编译步骤

(1)下载opencv源码,然后安装,opencv的安装即对源码的解压过程,解压后的文件目录如下
opencv源码目录
(2)opencv安装解压后的目录介绍:

  1. build文件夹vs编译源码后的文件,QT项目使用vs套件编译的可以直接使用本文件夹下的文件
  2. sources文件夹opencv的源代码,mingw32套件编译qt源码的项目需要先使用mingw32编译器编译opencv源码,然后引入QT进行使用。

(3)配置环境变量,将cmake和QT的mingw32编译器的路径添加到Path环境变量中(注意:QT两个路径)
环境变量
(4)QT的两个路径,一个是gcc和g++所在的路径,一个是qmake所在的路径
(5)打开cmake-gui界面,"Where is the source code"选项选择opencv源码的文件夹,"Where to build the binaries"选项选择一个新建的文件夹保存编译后的文件和编译过程中产生的中间文件
cmake-gui选择源码
(6)选择完毕后,点击左下方的Configure按钮配置mingw32编译器
配置mingw32编译器
(7)选择MinGW Makefiles,"Specify native compilers"自定义编译器
mingw配置
(8)编译器选择QT的Tools目录下对应套件下的gcc和g++编译器来编译c和c++程序
选择c/c++编译器
(9)点击Finish便会开始进行opencv默认组件的编译
(10)ffmpeg下载报错,原因ffmpeg在外网,网络连接失败/超时
下载ffmpeg报错
解决办法:
  https://github.com/opencv/opencv_3rdparty下载正确版本的ffmpeg,opencv4.5.4对应版本20211005,将下载的文件中“ffmpeg_version.cmake”、“opencv_videoio_ffmpeg.dll”和“opencv_videoio_ffmpeg_64.dll”三个文件复制到opencv的下载缓存文件夹“sources.cache\ffmpeg”中,然后打开cmd窗口切换到此文件夹,然后输入命令“certutil -hashfile 文件名 MD5”查看文件的MD5码,查看和未下载成功文件的MD5码是否相同,相同则修改文件名,然后重新点Configure
md5码查看
修改前文件
修改前文件
修改后文件
修改后文件
文件大小不对便是没有下载成功
(11)Configure之后窗口没有报红便编译成功了
编译成功截图
(12)组件设置,可以在Search框中直接搜名字查找
组件设置
”CMAKE_BUILD_TYPE“设置编译类型,Debug和Release
”WITH_1394“选择框选中
“WITH_OPENGL”选择框选中
“WITH_QT”选择框选中
其他的选项保持默认即可,然后再次点击Configure
(13)Configure完毕后将QT的一些路径进行设置为自己本地安装的QT路径,这是以后编译QT项目时候使用到的文件查找路径,设置完毕后再次Configure
QT文件夹选择
(14)框中显示Configure done便完成了配置
配置完成界面
(15)点击Generate生成Makefile,完成后显示“Generating done”
生成makefile成功
(16)关闭cmake-gui,打开cmd,切换到opencv的编译路径下,开始使用mingw32进行编译安装,“mingw32-make -j8”,使用Makefile进行编译,“-j 8”表示使用8个线程进行编译,编译速度快一些,编译前可以先查看一下电脑的线程数
(17)编译libopencv_corexxx.dll报错中断退出
编译报错
解决办法:返回cmake,添加Entry,名字为OPENCV_VS_VERSIONINFO_SKIP,Value选中,将CMAKE_CXX_FLAGS选项的值修改为“-std=c++11”,支持c11,然后再次Configure,Generate,mingw32-make -j8进行编译,成功编译后进行安装
添加Entry
(18)使用mingw32-make install命令进行安装,安装成功后便会在同级目录下生成一个install文件夹,这个文件夹下便是mingw套件编译源码后的文件
安装成功文件夹

三、QT中使用opencv

(1)将opencv的install文件夹下的“\x64\mingw\bin”,路径添加到环境变量Path
(2)新建QT项目,注意:选择编译套件的时候一定要选择和opencv编译时候用的套件一致
(3)QT项目在pro文件中使用INCLUDEPATH引入opencv的头文件,LIBS引入opencv的静态文件

INCLUDEPATH += D:\apps\Opencv\opencv\mingw32-build\install\include
LIBS += D:\apps\Opencv\opencv\mingw32-build\lib\libopencv_*.a

(4)引入头文件#include “opencv/opencv.hpp”
(5)使用cv命名空间using namespace cv;
(6)使用opencv中的函数编写项目
(7)发布程序,使用windeployqt程序将qt的dll文件复制到程序目录下,然后运行程序,因为缺少opencv的dll文件会报错,程序无法运行,根据报错时提示缺少哪些dll文件,到opencv的install目录下复制到发布的应用程序同级目录下,问题解决。

  • 53
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
根据引用,在使用Qt过程中引入OpenCV可能会遇到找不到OpenCV头文件的报错。解决方法是配置opencv.conf文件,输入相应命令来解决路径问题。根据引用,在树莓派上,默认可见的是/usr/include/目录,而我的opencv_modules.hpp文件在/usr/local/include/opencv4/opencv2目录下,所以需要通过命令来创建链接。最后,根据引用,如果还遇到找不到特定头文件的问题,可以根据头文件的实际路径进行相应的替换。例如,将#include "opencv2/xfeatures2d.hpp"替换为#include "/home/pi/Downloads/opencv_contrib-3.4.3/modules/xfeatures2d/include/opencv2/xfeatures2d.hpp"。以上是针对Qt树莓派OpenCV的一些解决方法和路径配置的建议。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [树莓派使用c++ qt 编译opencv流程](https://blog.csdn.net/HAO_keshui/article/details/129794665)[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^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *3* [空卡安装设置树莓派4B并安装opencv+QT](https://blog.csdn.net/maum61/article/details/122141123)[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^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值