ubuntu16.04安装opencv3.2.0全流程经验总结

笔者在ubuntu上安装ORB-SLAM3的过程中,需要先安装依赖opencv。网上虽然有很多相关博客,但笔者经尝试可以说踩了不少坑。但最终逐个排查解决了问题,并且在另一台ubuntu18.04的机器上顺利完成安装。由于安装环境是全新的ubuntu,没有事先安装过的依赖,因此安装过程比较详细。在此将opencv3.2.0的整个安装流程记录如下,供大家参考。

笔者的安装环境

  • ubuntu安装在虚拟机中,虚拟机为VMware15
  • ubuntu18.04或16.04
  • opencv-3.2.0
  • opencv_contrib-3.2.0

下载安装包

首先需要下载opencv以及依赖包opencv_contrib,官网上有其他版本的,但下载速度较慢。这里提供两个github上的地址:
opencv-3.2.0下载地址: https://github.com/opencv/opencv/tree/3.2.0
opencv_contrib-3.2.0下载地址: https://github.com/opencv/opencv_contrib
如果版本不一致,可以使用以下地址:
https://github.com/opencv/opencv_contrib/releases/tag/3.2.0

可以直接使用git命令:

git clone https://github.com/opencv/opencv/tree/3.2.0
cd opencv-3.2.0 #为路径便于查找,依赖包opencv_contrib放在opencv目录下
git clone https://github.com/opencv/opencv_contrib

也可以直接下载zip压缩包:

wget https://github.com/opencv/opencv/archive/3.2.0.zip
wget https://github.com/opencv/opencv_contrib/archive/3.2.0.zip

之后使用tar等命令进行解压。

笔者用的方法是前者,且由于虚拟机上 下载速度慢,于是先clone到本地,再通过WinSCP等工具传输到虚拟机中。

目录结构大致长这样(刚下载的里面没有build文件夹):
在这里插入图片描述

安装相关依赖

首先要记得提升权限,再用apt或者apt-get。或者给每个命令前加上sudo。笔者习惯先进入root:

sudo -s

根据opencv官方,需要下载以下依赖:

sudo apt install build-essential
sudo apt install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev  # 处理图像所需的包
sudo apt install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev liblapacke-dev
sudo apt install libxvidcore-dev libx264-dev # 处理视频所需的包
sudo apt install libatlas-base-dev gfortran # 优化opencv功能
sudo apt install ffmpeg

如果安装过程中报错,提示找不到这个包,可以尝试更新apt或apt-get:

sudo apt update
sudo apt-get update

编译opencv

首先在opencv(笔者直接存放在了家目录~下)下新建一个build文件夹,用于编译。如果已经有了,可以先删掉:

cd ~/opencv-3.2.0
rm -rf ./build
mkdir build

由于编译需要很多参数,命令行操作需要大量输入,看起来太复杂且不容易修改。这里笔者推荐使用cmake-gui在图形界面进行操作。
首先需要下载cmake-gui(也需要提升权限):

sudo apt install cmake-gui

安装完成后,直接在终端输入cmake-gui,即可看到图形界面:
在这里插入图片描述

其中Where is the source code填写你的opencv文件夹所在位置,Where to build the binaries填写opencv下的build文件夹。这里不能新建,所以刚才先创建了build文件夹。

然后点击Configure按钮进行配置。
如果过程中有报错,且报错内容含有ippicv,可能是由于网络原因,在安装ippicv失败导致的。因此需要手动替换掉安装失败的ippicv。这里提供一个很好的下载源:https://github.com/opencv/opencv_3rdparty/tree/ippicv/master_20151201/ippicv
下载其中的ippicv_linux_20151201.tgz,然后在虚拟机中找到原来ippicv_linux_20151201.tgz 的位置:

locate ippicv_linux_20151201.tgz

然后根据路径找到这个包,把它删掉,把刚才下载好的tgz包(笔者放在了家目录)放入该位置。这里仍然以笔者的路径为例:

cp /home/rcy/ippicv_linux_20151201.tgz /home/rcy/opencv-3.2.0/3rdparty/ippicv/downloads/linux-808b791a6eac9ed78d32a7666804320e/ippicv_linux_20151201.tgz

配置成功后的界面大致长这样:
在这里插入图片描述
可以看到下面的列表中,可勾选的参数增多了。

接下来设置各参数,首先CMAKE_BUILD_TYPE设置为Release:
在这里插入图片描述
OPENCV_EXTRA_MODULES_PATH设置为依赖包opencv_contrib下modules的路径:
在这里插入图片描述
CMAKE_INSTALL_PREFIX取值应为/usr/local,如果不是请修改:
在这里插入图片描述
为避免一些奇怪的报错 如(/usr/include/c++/7/cstdlib:75:15:fatal error:stdlib.h:No such file or direct),将ENABLE_PRECOMPILED_HEADERS设为off:
在这里插入图片描述
之后点击Generate。

如果出现报错,可能是由于依赖包版本问题引起的。因此笔者将OPENCV_EXTRA_MODULES_PATH设为空。发现解决问题:
在这里插入图片描述
当然,之后想加入依赖包,可以在路径中填上这一项,重新编译即可。

此时在opencv-3.2.0/build下会生成Makefile文件。

编译安装

进入Makefile所在路径,运行如下命令:

cd ~/opencv-3.2.0/build/
make
make install

如果make速度过慢,可以考虑将make换成make -j4或make -j8。

当命令执行结束,并看到进度100%时,说明安装完成:
在这里插入图片描述

我们使用python进行验证,发现没有报错,证明安装成功:
在这里插入图片描述
当然,也可以通过直接查看版本号进行验证:

pkg-config --modversion opencv

如果看到版本号,那么恭喜你,过了opencv这个大坑!

参考博客:
https://blog.csdn.net/evil_xue/article/details/85081005
https://www.cnblogs.com/hiram-zhang/p/12013858.html
https://www.cnblogs.com/happyamyhope/p/8477069.html

一些其他报错的处理:
https://elbauldelprogramador.com/en/how-to-compile-opencv3-nonfree-part-from-source/
https://www.cnblogs.com/fx-blog/p/8213704.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值