话不多说,直接干货走起,本来是自用记录,但是如果小白跟我步骤一步一步走基本没有问题的
另外提一下,如果有条件尽量科学上网,编译过程时常遇到问题大多都是网络不给力造成的,实在不行就用手机开热点
一、源码下载
首先,下opencv4.3和contrib,链接贴下面了
https://opencv.org/releases/page/3/ opencv直接下载source版本
Release 4.3.0 · opencv/opencv_contrib · GitHub contrib直接下载源码
下载好后opencv解压缩出来一个opencv-4.3.0的文件夹,contrib解压后文件夹放入opencv文件夹里,目录如图所示
二、安装依赖
sudo apt-get install cmake
sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg-dev libswscale-dev libtiff5-dev libgtk2.0-dev pkg-config
sudo apt-get install python3-dev
sudo apt-get install python-dev
三、补充编译所需文件
链接:https://pan.baidu.com/s/1j3WOlpFANnTG7yHhTqaHpA?pwd=dj0n
提取码:dj0n
下载下来的文件放到/opencv-4.3.0/opencv_contrib-4.3.0/modules/xfeatures2d/src 下面
前期准备工作完成,接下来就是编译了
四、编译
首先进入opencv-4.3.0根目录,创建build文件夹
mkdir build && cd build
进行cmake
#第四个参数的路径记得要跟自己的实际路径对应上
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D OPENCV_GENERATE_PKGCONFIG=ON .. \
-D OPENCV_EXTRA_MODULES_PATH=/home/tlq/opencv-4.3.0/opencv_contrib-4.3.0/modules ..
进行make
sudo make clean
sudo make -j8
如果报错,往下跳转看问题解决方法,或者直接去网上照着错误找一找,解决完后继续执行make操作,如果构建完成就继续进行安装
sudo make install
五、配置环境
选择一款编辑文本的如gedit nano vim,我一般用gedit,操作比较简单
配置ld.so.conf文件
sudo gedit /etc/ld.so.conf
在文件中加入一行/usr/local/lib,最终文件内容为
include /etc/ld.so.conf.d/*.conf
/usr/local/lib
完成后保存文件关闭,继续
sudo ldconfig
然后修改另一个文件
sudo gedit /etc/bash.bashrc
在文件最后另起一行加入
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
保存文件关闭后继续
source /etc/bash.bashrc
此时安装基本完成,如果想测试的话,有多种方法可以去查一下,这里介绍一个比较简单的,输出应该是4.3.0
whereis opencv_version
opencv_version
六、问题解析
我就遇到了一个问题:make的时候报错
fatal error: features2d/test/test_detectors_regression.impl.hpp: 没有那个文件或目录
解决方法:
将opencv-4.3.0/modules/features2d/test/文件下的如下文件
test_descriptors_invariance.impl.hpp
test_descriptors_regression.impl.hpp
test_detectors_invariance.impl.hpp
test_detectors_regression.impl.hpp
test_invariance_utils.hpp
拷贝到opencv_contrib-4.3.0/modules/xfeatures2d/test/文件下
然后,将opencv_contrib-4.3.0/modules/xfeatures2d/test/test_features2d.cpp文件下的
#include "features2d/test/test_detectors_regression.impl.hpp"
#include "features2d/test/test_descriptors_regression.impl.hpp"
改为
#include "test_detectors_regression.impl.hpp"
#include "test_descriptors_regression.impl.hpp"
然后,将opencv_contrib-4.3.0/modules/xfeatures2d/test/test_rotation_and_scale_invariance.cpp文件下的
#include "features2d/test/test_detectors_invariance.impl.hpp"
#include "features2d/test/test_descriptors_invariance.impl.hpp"
改为
#include "test_detectors_invariance.impl.hpp"
#include "test_descriptors_invariance.impl.hpp"
保存文件后重新编译即可