Qt若要能处理图片和视频,就必须安装OpenCV,而OpenCV中很多的高级功能如人脸识别等都包含在Contrib扩展模块中,需要将Contrib与OpenCV一起联合编译,目前所用这两个版本都是4.5.0版。
一、下载OpenCV
OpenCV的官方下载地址为http://opencv.org/releases.html,这里选择OpenCV4.5.0版,单击“Sources”超链接下载其源代码的压缩包,得到opencv-4.5.0.zip。
找到4.5.0版本的源码下载
二、下载Contrib
OpenCV官方将已经成熟稳定的功能放在opencv包里发布,而在发展中尚未成熟的技术则统一置于Contrib扩展模块中。通常情况下,下载的OpenCV中不包含Contrib扩展库的内容,如果只是进行一般的图片、视频处理,则仅使用OpenCV就足够了,但是OpenCV中默认不包含SIFT、SURF等先进的图像特征检测技术,另外一些高级功能(如人脸识别等),都在Contrib扩展库中,若欲充分发挥OpenCV的强大功能,则必须将其与Contrib扩展库放在一起联合编译使用。
从OpenCV标准Github网站中下载Contrib,地址为http://github.com/opencv。
三、环境配置
打开终端,依次执行
sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
四、安装
将OpenCV4.5.0下载解压后,再将opencv_contrib4.5.0解压到OpenCV4.5.0文件夹里面(为方便后续操作,可将上面两个文件夹分别命名为opencv4.5.0和opencv_conrib4.5.0)
然后在opencv-4.5.0文件夹下创建一个build文件夹,用于编译
打开终端
cd build
执行cmake编译
sudo cmake -D CMAKE_BUILD_TYPE=RELEASE -D OPENCV_EXTRA_MODULES_PATH=/home/yang/opencv-4.5.0/opencv_contrib-4.5.0/modules ..
在执行sudo make -j8
这一步是编译
最后执行sudo make install
这一步是安装
若出现下面的错误时:fatal error: boostdesc_bgm.i:没有那个文件或目录
这是因为camke配置的时候没有下载完全,可以重新尝试下载,或者从下面连接处下载
https://download.csdn.net/download/qq_40170041/87437485
然后将里面的文件放入opencv_contrib-4.5.0/modules/xfertures2d/src
在opencv 的cmake编译的时候遇到 找不到 feature2d/test/test_detectors_regression.impl.hpp
文件的问题。
先找这个文件在哪儿:
find -name test_detectors_regression.impl.hpp
发现这个路径在opencv下的 modules 目录下的:
opencv-4.5.0/modules/feature2d/test/test_detectors_regression.impl.hpp
为啥找不到呢,我查看make的运行命令:
make VERBOSE=1
发现报错的gcc执行命令中 -I参数的序列中并没有包含 modules这个路径。
知道问题了就简单了,解决方法就是添加这个参数。
我是通过修改项目的 CMakeLists.txt 来实现的,简单暴力 的那种:
gedit opencv/CMakeLists.txt
在下面一行行添加:
include_directories("modules")
然后重新执行cmake
在重新编译安装就可以了
Qt中配置opencv库的路径