Qt 若要能处理图片和视频,则必须安装 OpenCV, OpenCV 中很多高级功能如人脸识别等皆包含在 Contrib 扩展模块中,需要将 Contrib OpenCV 起联合编译。
一、安装CMake
1、CMake介绍
CMake是一个被广泛使用的、开源免费并且完全跨平台的构建工具,可以用简单的语句来描述所有平台的安装(编译过程)。它能够输出各种各样的
makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的automake。
2、CMake下载
CMake载地址为: https://cmake.org/download/
下载最新稳定版即可(Latest Release):
3、安装CMake
下载完成后,单击“Next”按钮,在下图中勾选“I accept the terms in the License
Agreement”复选框接受许可协议:
选中“Add CMake to the system PATH for all users”单选按钮添加系统路径变量。也可以同时勾选“CreateCMakeDesktopIcon”复选框,以便在安装完成后在桌面上创建CMake的快捷方式图标。
接下去的安装过程很简单,跟着向导的指引往下操作即可,直到完成安装为止。
下载OpenCV
OpenCV 的官方下载地址为 https://opencv.org/releases.html
选择release单击 "Sources" 超链接下载其源代码 的压缩包,得到 opencv-4.5.4.zip
三、下载Contrib
OpenCV 官方将已经稳定成熟的功能放在 opencv 包里发布,而正在发展中尚未成熟的技术则
统一置于 Contrib 扩展模块中。通常情况下,下载的 OpenCV 中不包含 Contrib 扩展库的内容,如
果只是进行一般的图片、视频处理,则仅使用 OpenCV 就足够了。但是,OpenCV 中默认不包扩先进的图像特征检测技术,另外一些高级功能(如人脸识别等)都在 Contrib 扩展 库中,若充分发挥 OpenCV 的强大功能,则必须将其与 Contrib 扩展库放在一起联合编译使用。 OpenCV 标准Github 网站下载 Contrib, 地址为 https://github.com/opencv
1、下载Contrib
单击图左侧的超链接 "opencv contrib" 进入 Contrib 发布页
再单击 "releases" 超链接进入 Contrib 下载页,因选择 Contrib 扩展库的版本必须与 OpenCV 的版本严 格一致,故本文选择 4.5.4 版,下载得到 opencv_ contrib-4.5.4.zip
根据下图操作选择版本
1.1选择分支
1.2选择版本
1.3下载
四、安装 Python
由于 OpenCV 库的某些功能模块的运行还依赖千 Python 平台,故编译前还要在自己的计算
机操作系统中安装 Python 语言,本文安装的是 64 Python
3.10.5
1、下载
Python 官网 https: /www. python.org/downloads/windows/下载获得安装包 python-
3.10.5
选择稳定版本下载
2、安装
双击启动安装向导,单击 "Install Now" 按照向导的指引 下操作,在下载完成后我们打开下载文件
注意:存储的路径必须都是英文不能有中文
然后python就安装好啦
检查python是否安装成功
按下 Win+R 打开Windows系统的“运行”窗口 并输入cmd,输入python,可以查看是否安装成功当出现Python 3.10.5 时就说明python安装成功
五、添加环境变量
1、添加CMake环境变量
进入 Windows 系统环境变量设置对话框,可以看到,由于 二中 的设置, CMake 已经自动将其安装路径 "C:\Program Files\CMake\bin" 写入环境变量 Path 中。如果没有写入需要手动写入
1.1新建环境变量路径
1.2将安装路径下的bin添加到环境变量路径
2、添加QT环境变量
以同样的方法添加
3、添加python环境变量
查看是否有python环境变量没有的话手动添加(python环境有时重启才会生效)
六、编译QT库
我们使用 CMake OpenCV 及其对应的 Contrib 联合编译为可供使用的 Qt 库,在执行编译之前,还要做如下准备工作
1. 准备目录
(1) 新建 opencv4.5.4文件夹,将下载得到的 OpenCV 库的opencv-4.5.4.zip 包解压,将得到的所有文件复制到该文件夹。
(2) 新建contrib4.5.1 文件夹,将下载得到的 Contrib 扩展库的opencv_contrib-4.5.1 .zip 包解压,将得到的所有文件复制到该文件夹。
(3) 新建一个 OpenCV4.5.4Build 文件夹,用于存放编译后生成的文件和库。经过以上 个步骤得到的目录结构
2.编译配置
1. 设置路径
首先打开 CMake 工具进行编译相关的配置。
单机右上角 "Browse Source …”按钮,选择OpenCV 库源代码的文件夹
单击 "Browse Build…”按钮,选择编译生成二进制库文件的存放路径为 "OpenCV4.5.4Build "
设置好路径后,单击左下角的 "Configure "按钮,选中 "Specify native compilers" 单选按钮表示由用户来指定本地编译器,然后从下拉列表中选择所用的编译器为 Qt 自带的 "MinGW Makefiles"
3、指定编译器路径
单击 "Next" 按钮,在弹出的如图的界面上要求用户指定编译器所对应的C/C++ 编译程序路径,这里选择C编译程序的路径为 "E:/WINQT/Tools/mingw730_64/bin/gcc.exe": 选择编译程序的路径为 "E:/WINQT/Tools/mingw730_64/bin/g++.exe"
4、开始编译
单击 "Finish" 按钮回到 CMake 主界面,此时主界面上的 "Configure" 按钮变为 "Stop" 按钮,右边进度条显示进度,同时下方输出一系列信息,表示编译器配置正在进行中
随后,在主界面中央生成了一系列红色加亮选项条的列表,同时下方信息栏中输出 "Configuring done", 表示编译器配置完成
5. 设置编译选项
这些红色加亮的选项并非都是必须编译的功能,要确保选中"WITH_OPENGL" ,"WITH_QT" 这两个编译选项,同时,要确保取消勾选 "WITH_MSMF" 编译选项
另外,为了将 Contrib 扩展库与 OpenCV 无缝整合,还需要设置 OpenCV 的外接模块路径, 从众多的选项条中找到一个名为 "OPENCV_ EXTRA_ MODULES_ PATH" 的选项,设置其值为
"E:\1WT\10.HaiRongQT\Bbuild\contrib4.5.4\opencv_contrib-4.5.4\modules"错误的格式
"E:/1WT/10.HaiRongQT/Bbuild/contrib4.5.4/opencv_contrib-4.5.4/modules"正确的格式
(即之前在准备时存放 Contrib源文件目录下的 modules 子目录)。
设置完成后,再次单击 "Configure" 按钮,界面上的红色加亮的选项全部消失,同时在下
方信息栏中输出 "Generating done" 表示编译选项全部配置完成
红色全部消失
执行Generating
6、开始编译
所有的设置项都完成后,就可以开始编译了。打开 Windows 命令行,进入到事先建好的编
译生成目标目录 D:\OpenCV4.5.4Build 下,输入编译命令:mingw32-make
可以使用多线程执行这条语句似的编译更快
在进度显示 100% 时,出现 "Built target opencv _version_ win32" 信息,表示编译成功
编译过程中出现的问题
错误1:
1、错因
在编译OpenCV 源码过程中,需要下载第三方依赖包,由于种种原因,无法下载,导致编译中止
错误类型如下:
FFMPEG: Download: opencv_videoio_ffmpeg.dll Try 1 failed CMake Warning
at cmake/OpenCVDownload.cmake:202 (message): FFMPEG: Download
failed: 28;“Timeout was reached”
FFMPEG: Download: opencv_videoio_ffmpeg_64.dll Try 1 failed CMake
Warning at cmake/OpenCVDownload.cmake:202 (message): FFMPEG:
Download failed: 35;“SSL connect error”
以上错误:opencv_videoio_ffmpeg.dll 和 opencv_videoio_ffmpeg_64.dll下载失败导致。
2、解决方法
从其他地方下载以上两个文件,放在opencv\sources.cache\ffmpeg目录中
只需要下载对应的opencv_videoio_ffmpeg.dll 和 opencv_videoio_ffmpeg_64.dll即可,文件名前面的16进制前缀,为对应文件的md5值。
2.1获取下载链接和MD5值
打开选择编译生成二进制库文件的存放路径为 "OpenCV4.5.4Build下的CMakeDownloadLog.txt
里面有下载地址和MD5值
2.2拼接MD5和opencv_videoio_ffmpeg.dll 、opencv_videoio_ffmpeg_64.dll并将文件复制到下面目录