• 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
    • 2
    • 3
    • 4
    • 5
    • 6

    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
    
    • 1
    • 2
    • 3

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

    sudo apt-get install libvtk5-dev  
    
    • 1

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

    cp sources.list sources.list.bak
    
    • 1

    (2)然后更改list的内容

    sudo gedit /etc/apt/sources.list
    
    • 1

    (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
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    (4)然后

    sudo apt-get update
    
    • 1

    (5)再执行

    sudo apt-get install libvtk5-dev
    
    • 1

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

    sudo apt-get install libvtk6-dev
    
    • 1

    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
    
    • 1
    • 2
    • 3

    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/ ..
    
    • 1

    这部分:

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

    5.make

    make -j4
    sudo make install
    
    • 1
    • 2

    如果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
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

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

    sudo apt-get autoremove libtiff5-dev
    sudo apt-get install libtiff5-dev
    
    • 1
    • 2

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

    locate libtiff.so
    
    • 1

    第一次使用 locate 报错:

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

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

    umount /run/user/1000/gvfs
    rm -rf /run/user/1000/gvfs
    
    • 1
    • 2

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

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

    (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
    
    • 1

    在下面加入

    include /usr/local/lib
    
    • 1

    使其生效

    sudo ldconfig
    
    • 1

    2、修改bash.bashrc文件

    sudo gedit /etc/bash.bashrc 
    
    • 1

    在末尾加入

    PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
    export PKG_CONFIG_PATH
    
    • 1
    • 2

    然后source使得bash生效:

    source /etc/bash.bashrc
    
    • 1

    7.验证版本

    pkg-config opencv --modversion
    
    • 1

    8.引用:

    1
    2
    3

    9.安装回ROS

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

  • 相关阅读:
    字节一面后,我又看了一遍ThreadLocal核心原理
    【OpenCV】 拟合直线 与 霍夫直线 对比 , fitLine()与 HoughLinesP()对比
    全平台数据管理工具 DataCap 1.1.0.20221115 发布
    【VSCode】配置C/C++开发环境教程(Windows系统)
    一文聊透 Netty 核心引擎 Reactor 的运转架构
    LeetCode 5. 6. 题
    第十八章《JDBC》第2节:JDBC编程
    来自鹅厂大神级架构师把Tomcat内核设计解析完了
    三冲IPO的思派健康如何承载腾讯的互联网医疗梦?
    从零开始:深入理解Kubernetes架构及安装过程
  • 原文地址:https://blog.csdn.net/qq_47104322/article/details/126692687