Ubuntu20.04下载opencv3.4--未完善

最近在学习slam14讲这本书,第5讲中需要下载opencv3.1,(这个是一个ubuntu20.04下载opecv3.1的博客,不过后来我报了一些依赖的错,懒的解决了,就没有用了)在下载opencv3.1时,发现太麻烦了。。。还要自己下载ippiv之类的压缩包放在对应文件下、更改.cmake文件什么的,make之后又报了很多错,懒得修了。。于是选择下载opencv3.4

因为之前使用别人电脑配置环境的时候,就遇到opencv3下载出现问题,更改一大堆软链接才搞定,所以现在记录以下过程:

1.安装依赖

我看了很多博客,其实我都不知道哪个才是合适的?

这个是一个知乎上写的:

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
sudo apt-get install build-essential qt5-default ccache libv4l-dev libavresample-dev libgphoto2-dev libopenblas-base libopenblas-dev doxygen openjdk-8-jdk pylint libvtk6-dev
sudo apt-get install pkg-config
sudo apt-get install libvtk5-dev  #这个要注意

1.安装libjasper-dev报错:
借鉴了这篇博客:Ubuntu18.04下安装OpenCv依赖包libjasper-dev无法安装的问题,libjasper1是libjasper-dev的依赖包

sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
sudo apt update
sudo apt install libjasper1 libjasper-dev

2.不过最关键的库libvtk5-dev :

sudo apt-get install libvtk5-dev  

安装时如果找不到这个库,更换中科大源试试,方法如下:
(1)首先备份一下 /etc/apt/sources.list,先跳到 /etc/apt/ 路径下,然后

cp sources.list sources.list.bak

(2)然后更改list的内容

sudo gedit /etc/apt/sources.list

(3)输入(如果想要更换其他源,例如清华源、中科大源等等,这个博客整理好了)

deb https://mirrors.ustc.edu.cn/ubuntu/ focal main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ focal-security main restricted universe multiverse

# deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-security main restricted universe multiverse

## Pre-released source, not recommended.
# deb https://mirrors.ustc.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse

(4)然后

sudo apt-get update

(5)再执行

sudo apt-get install libvtk5-dev

应该就可以安装上了,其实我换完源之后仍然找不到,于是安装的

sudo apt-get install libvtk6-dev

2.下载opencv源代码包

这是opencv3.4的zip的github下载地址
这是contrib 3.4的下载地址

3.解压两个压缩包,并把压缩后的 contrib3.4 放到opencv 3.4文件的下面 ,命令如下

unzip opencv-3.4.zip
unzip opencv_contrib-3.4.zip
cp -r opencv_contrib-3.4 opencv-3.4

4.进行cmake

 cmake -D ENABLE_CXX11=YES -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_ENABLE_NONFREE=YES -D OPENCV_EXTRA_MODULES_PATH=/home/wangchen/下载/opencv-3.4/opencv_contrib-3.4/modules/ ..

这部分:

OPENCV_EXTRA_MODULES_PATH=/home/wangchen/下载/opencv-3.4/opencv_contrib-3.4/modules/ 更改成实际地址

5.make

make -j4
sudo make install

如果make成功,则省略下面这段话;在make后,如果你报错下面这些:

//usr/lib/x86_64-linux-gnu/libvtkIOImage-6.2.so.6.2: undefined reference to `TIFFReadDirectory@LIBTIFF_4.0'
//usr/lib/x86_64-linux-gnu/libvtkIOImage-6.2.so.6.2: undefined reference to `TIFFGetFieldDefaulted@LIBTIFF_4.0'
//usr/lib/x86_64-linux-gnu/libvtkIOImage-6.2.so.6.2: undefined reference to `TIFFNumberOfDirectories@LIBTIFF_4.0'
//usr/lib/x86_64-linux-gnu/libvtkIOImage-6.2.so.6.2: undefined reference to `TIFFIsTiled@LIBTIFF_4.0'
//usr/lib/x86_64-linux-gnu/libvtkIOImage-6.2.so.6.2: undefined reference to `TIFFOpen@LIBTIFF_4.0'
//usr/lib/x86_64-linux-gnu/libvtkIOImage-6.2.so.6.2: undefined reference to `TIFFDefaultStripSize@LIBTIFF_4.0'
//usr/lib/x86_64-linux-gnu/libvtkIOImage-6.2.so.6.2: undefined reference to `TIFFReadRGBAImage@LIBTIFF_4.0'
//usr/lib/x86_64-linux-gnu/libvtkIOImage-6.2.so.6.2: undefined reference to `TIFFReadTile@LIBTIFF_4.0'

(1)重装libtiff4-dev
如果选择这个解决方法,即重装libtiff4-dev的话,ROS会被删除,不建议这样粗暴使用,而且我这样用了,也没解决问题

sudo apt-get autoremove libtiff5-dev
sudo apt-get install libtiff5-dev

(2)删除库
我照着这篇博客,首先

locate libtiff.so

第一次使用 locate 报错:

find: ‘/run/user/1000/gvfs’: Permission denied解决办法

使用下面这两个命令之后就可以locate了

umount /run/user/1000/gvfs
rm -rf /run/user/1000/gvfs

我直接删除 /usr/local/lib/libtiff* 的文件,再次创建build文件、cmake、make就好了

sudo rm -rf /usr/local/lib/libtiff*   # 删除自己安装的所有libtiff库

(3)更改软链接

这个之前做过,但是忘记了用谁指向谁了。
报错的提示:a对b未定义的引用,就是b有问题,需要把b指向一个能用的源

软链接格式:
ln -s c b
意思为:c <-- b,其中c为源,b相当于一个快捷方式

6.配置环境变量

1、修改/etc/ld.so.conf文件

sudo gedit /etc/ld.so.conf

在下面加入

include /usr/local/lib

使其生效

sudo ldconfig

2、修改bash.bashrc文件

sudo gedit /etc/bash.bashrc 

在末尾加入

PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH

然后source使得bash生效:

source /etc/bash.bashrc

7.验证版本

pkg-config opencv --modversion

8.引用:

1
2
3

9.安装回ROS

我发现重新安装ROS的时候,会自动卸载我的 libvtk6-dev ,不知道怎么回事,我发现ROS似乎和 libvtk6-dev 互相冲突?
安装 ROS,会自动卸载libvtk6-dev;
安装 libvtk6-dev ,会自动卸载ROS的依赖包,导致ROS不能用。
Ubuntu20.04下载opencv3.4--未完善_第1张图片但是不想管,还是直接下载:参考这个博客,每次我都用这个下载ROS,
查询ip的网站这个可以,把搜出来的几个网址可以全部放到/etc/hosts文档下面,然后再sudo rosdep init就好了。
这个安装比较简单。

你可能感兴趣的:(slam,ubuntu,opencv)