在学习slam十四讲中的ch5时需要使用到opencv3版本,但是在ubuntu系统上很不容易安装。最后查了大量的资料终于安装好了,希望这篇文章可以为大家有所帮助。
在这里电脑时ubuntu20.04的系统,安装的是OpenCV3.4.12版本。
安装步骤如下:
① 安装依赖库(这个几乎所有教程都有介绍,大家可以看看自己缺少了哪些依赖并自行进行安装)
首先安装依赖:
sudo apt-get install build-essential libgtk2.0-dev libvtk5-dev libjpeg-dev libtiff4-dev libjasper-dev libopenexr-dev libtbb-dev
会出现:
E:软件包 libvtk5-dev 没有可安装候选
E:软件包 libtiff4-dev 没有可安装候选
解决方法:将代码改为
sudo apt-get install build-essential libgtk2.0-dev libvtk6-dev libjpeg-dev libtiff5-dev libjasper-dev libopenexr-dev libtbb-dev
如果继续报错,显示安装libjpeg-dev出现问题,需要打开源文件进行配置:
sudo vim /etc/apt/sources.list
并在最后一行添加:
deb http://security.ubuntu.com/ubuntu xenial-security main
然后对软件源进行更新:
sudo apt-get update
再次安装依赖:
sudo apt-get install build-essential libgtk2.0-dev libvtk6-dev libjpeg-dev libtiff5-dev libjasper-dev libopenexr-dev libtbb-dev
此时就可以成功安装了。
②下载OpenCV的安装包
下载路径:Releases - OpenCV
我是用的是OpenCV-3.4.12版本
下载资源安装包(“source”)后,解压到主目录打开。
③进行编译安装
mkdir build && cd build cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local/opencv3 ..
注意在安装过程中可能在出现一个ippicv包会下载很慢(有耐心且没网络波动可以和我一样选择等待),则可以中断安装(ctrl+c),手动下载:
然后将下载下来的文件按照下面的方式进行修改:
修改ippcv cmaek, 在源码目录下3rdparty/ippicv/ippicv.cmake, ocv_download修改为下面这样,也就是原本是网址替换成自己存放ippcv tar的目录:file:///tmp/3rdparty/ippicv/。
ocv_download(FILENAME ${OPENCV_ICV_NAME} HASH ${OPENCV_ICV_HASH} URL "${OPENCV_IPPICV_URL}" "$ENV{OPENCV_IPPICV_URL}" "file:///tmp/3rdparty/ippicv/" DESTINATION_DIR "${THE_ROOT}" ID IPPICV STATUS res UNPACK RELATIVE_URL)
修改完成后重新进行编译(-j4表示同时运行 4 个编译任务,这样可以更快地完成代码的编译过程,可以根据自己电脑的情况进行调整j后的数字)
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local/opencv3 .. make -j4 sudo make install
这一步比较费时间,之后就可以编译运行了,可以使用pkg-config opencv --modversion(,pkg-config opencv4 --modversion命令对OpenCV4版本进行查询),对当前的OpenCV版本进行查询。
④可能遇到的问题
问题1:安装了OpenCV,但是查询不到安装版本
如果上述步骤完成后,可以pkg-config opencv --modversion后显示
Package opencv was not found in the pkg-config search path. Perhaps you should add the directory containing `opencv.pc' to the PKG_CONFIG_PATH environment variable No package 'opencv' found
表明可以查看当前搜索路径中是否包含opencv.pc文件。
默认的搜索路径为:/usr/local/lib,但是实际在安装OpenCV时,此文件在/usr/local/opencv3/lib/pkgconfig中,只需要将该文件复制到搜索路径下即可。
再次使用命令进行查询
pkg-config opencv --modversion
现在就可以查询到OpenCV3的版本号了!
问题2:编译ch5中的文件时,出现编译错误
在运行文件时,还需要更改CMakeLists.txt文件。
首先,需要添加OpenCV的包(使用cmake中的find_package宏命令)
然后,对文件进行编译():
mkdir buidl && cd build
cmake -build ..
make
不过程序需要对当前目录下的图片进行读取,所以需要将两张图片(stereo对应的两个图片所在目录)复制到build目录中。
另外,对rgbd目录中的文件进行编译时,CMakeLists.txt文件还需要与fmt库进行关联。
然后对文件进行编译:
mkdir buidl && cd build
cmake -build ..
make
然后就可以顺利运行了。