OpenCV4.4.0 安装测试 Installation & Examination (Ubuntu18.04, Ubuntu 20.04)

单纯简单的 OpenCV 安装配置方法,在这个地方已经踩过好几次坑了,这次是基于 WSL 平台,Ubuntu 20.04 进行的安装,但是其中遇到的问题基本上已经足够用于 Linux 系统的各种意外了

下载 dependencies

安装 OpenCV4.4 需要一些准备工作(不包含 python),首先要做的是下载它的一些 dependency(来自 Ubuntu 20.04 从源码编译并配置OpenCV 4.4.0 以及 python 3.8 支持):

# If you don't have cmake:
# sudo apt-get install cmake
sudo apt-get install libswscale-dev libtiff5-dev libgtk2.0-dev pkg-config
sudo apt install build-essential
sudo apt install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt install libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
# If need to support python3:
# sudo apt install python3-dev python3-numpy
# If need ffmpeg:
sudo apt install ffmpeg

如果安装成功了就不用看下面这些了,但是我遇到了各种问题:

意外Ⅰ.依赖损坏导致的 apt-get 中 Unmet dependencies 问题

可能系统由于之前某(几)次 apt-get upgrade 过程中断,导致依赖损坏;安装新的包时,提示Unmet dependencies,解决方案来源于如何解决 apt-get 中 Unmet dependencies 问题,这个时候可以尝试去根据提示信息,运行 apt-get -f install 来修复问题就解决了。

简单来说,就是先执行上述修复命令,然后更新升级一下确保没留什么隐患:

sudo apt --fix-broken install
sudo apt-get update
sudo apt-get upgrade

如果网络不好,你可以运行多次这些命令,下到一半的包(据我所知)是可以接着前面继续下载的... ...

意外Ⅱ.Ubuntu18.04+上找不到 libpng12.0 的问题

在上面安装包的时候发生报错类似于 Package libpng12-0 is not installed,而且无论如何挣扎,网有多好都装不上这个东西,解决方案来自修复了在 Ubuntu 18.04、19.10、20.04 上找不到的 libpng12-0,据说这已经不是个新的问题了,只是用户升级到更高版本如18.04,19.10,20.04后,“libpng12 不再在Ubuntu存储库档案中可用,从而导致新的 libpng(libpng16)库安装失败。”

这里是 Ubuntu20.04、19.10 或 19.04 上的问题的解决方案,可以使用使用更新的libpng12-0软件包创建的 PPA 安装 libpng。添加 PPA 并使用以下命令安装 libpng12-0(手动安装、18.04/Linux Mint 19 的解决方案以及其它问题见前面的链接):

sudo add-apt-repository ppa:linuxuprising/libpng12
sudo apt update
sudo apt install libpng12-0

成功后,PPA 版本中不再发生上述错误。

意外Ⅲ.Ubuntu20.04+ 系统遇到的 Can not locate package "libjasper-dev"

如果报错 Can not locate package "libjasper-dev",八成是网络差造成的,解决方案为添加一下下面这个源:

sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"

然后重新 install 一下 libjasper-dev 相关的库大概就可以了。

安装&编译

生成 Makefile

注意上面的都务必先安装成功,然后输入如下命令构建 Makefile:

cd opencv-4.4.0
mkdir build
cd build
cmake \
-D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local \
-D OPENCV_GENERATE_PKGCONFIG=ON -D OPENCV_ENABLE_NONFREE=ON \
-D OPENCV_EXTRA_MODULES_PATH=/home/optic_css/opencv-4.4.0/opencv_contrib-4.4.0/modules/ \
-D BUILD_opencv_world=YES \
-D BUILD_opencv_python2=OFF -D BUILD_opencv_python3=OFF \
-D WITH_OPENGL=ON -D WITH_EIGEN=ON \
-D BUILD_EXAMPLES=ON -D BUILD_DOCS=ON \
..

上面的cmake命令中有几点需要注明的:

  • CMAKE_BUILD_TYPE一定要设置成Release的;
  • CMAKE_INSTALL_PREFIX要写成你自己想要安装的路径,不写的话默认是/usr/localinclude/, bin/, lib/3个文件夹下;
  • 由于4.0以后的版本不再有默认设置的opencv4.pc文件,在这里要记得手动设置下OPENCV_GENERATE_PKGCONFIG是开着的来支持pkg-config功能;
  • OPENCV_ENABLE_NONFREE开启后会允许使用已申请专利的算法们,还是值得打开一下的;
  • OPENCV_EXTRA_MODULES_PATH填写contrib库的位置,我的contrib源文件放在了opencv-4.4.0的文件夹下,按理说可以放在任何位置,最好弄得和我一样叭;
  • BUILD_opencv_world作为综合所有头文件的东西,还是打上勾;
  • 这里把关于python方面的编译都给关掉了;
  • 为了使用相关的exampledoc,把这两个对应的开关打开;

意外Ⅳ. Makefile生成时卡在了ippicv的下载上

cmake .. 命令运行时,卡在了(基本是因为网太差,或者是网址被 ban 了):

IPPICV: Download: ippicv_2020_lnx_intel64_20191018_general.tgz

解决方案参考了OpenCV 中手动安装 ippicv(ubuntu),具体来说,采取的是先找到下载这个东西的网址,然后进入网址手动下载后放在XXX路径,去文件里面手动改一下下载路径到本地路径即可。

下载 ippcv 文件的网址被放在了 opencv-x.x.x\3rdparty\ippicv\ippicv.cmake 文件中,打开文件,找到下面这三部分语句:

  # Commit SHA in the opencv_3rdparty repo
set(IPPICV_COMMIT "a56b6ac6f030c312b2dce17430eef13aed9af274")
################################################################################################
"${OPENCV_IPPICV_URL}"
"$ENV{OPENCV_IPPICV_URL}"
"https://raw.githubusercontent.com/opencv/opencv_3rdparty/${IPPICV_COMMIT}/ippicv/"
################################################################################################
if(X86_64)
set(OPENCV_ICV_NAME "ippicv_2020_lnx_intel64_20191018_general.tgz")
set(OPENCV_ICV_HASH "7421de0095c7a39162ae13a6098782f9")

提取一下红色字符串里面的信息,得到目标文件的下载网址为 https://raw.githubusercontent.com/opencv/opencv_3rdparty/a56b6ac6f030c312b2dce17430eef13aed9af274/ippicv/ippicv_2020_lnx_intel64_20191018_general.tgz,下载得到 ippicv_2020_lnx_intel64_20191018_general.tgz,把文件放在一个你喜欢的位置,我放在了 file:/home/optic_css/opencv-4.4.0(如果不能下载,移步 ubuntu 安装 opencv 无法下载 IPPICV 的问题ippicv_2020_lnx_intel64_20191018_general.tgz)。这样之后再把以前的文件中的网址改成本地地址就好了,也就是说,把 ippicv.cmake 文件中的:

  "${OPENCV_IPPICV_URL}"
"$ENV{OPENCV_IPPICV_URL}"
"https://raw.githubusercontent.com/opencv/opencv_3rdparty/${IPPICV_COMMIT}/ippicv/"

改成你的本地下载地址:

  "${OPENCV_IPPICV_URL}"
"$ENV{OPENCV_IPPICV_URL}"
"file:/home/optic_css/opencv-4.4.0"
#"https://raw.githubusercontent.com/opencv/opencv_3rdparty/${IPPICV_COMMIT}/ippicv/"

意外Ⅴ. Makefile生成后发现有未能下载的文件

发现有下面这些文件在 cmake 的时候没有下载下来(你可以在 build/CMakeDownloadLog.txt 中查看,查找 #cmake_download,在其后首先列出的是文件名,接着是下载地址):

于是手动一个一个地把它们下载下来,放在路径 /opencv-4.4.0/opencv_contrib-4.4.0/modules/xfeatures2d/src/ 下就可以了,不用再次生成 Makefile。

编译(未在编译中遇到除了时间长以外的任何问题)

有在编译中遇到问题的可以看 Ubuntu18.04+Opencv4.4.0+contrib 详细配置过程或者自己去网上查

生成好 Makefile 之后就可以直接编译、下载了(先看一下电脑有几个核,考虑多线程编译叭,不然直接慢die):

make -j8
sudo make install

开了八个线程之后的结果就是等了将近一个小时,编译成功输出的东西是下面这一坨:[OpenCV4.4.0 Compiling Output](2020. Oct. OpenCV4.4.0_Compiling_Output_optics_css@qq.com.txt),虽然基本看不懂里面那些库都是啥,但是仍然很有成就感?

OpenCV4.4.0的环境配置

添加/usr/local/lib作为程序执行时共享库*.so的路径

/etc/ld.so.conf.d/opencv4.conf 中(如果没有就自己新建一个)写入 /usr/local/lib,用 nano 打开这个文件并修改:

sudo nano /etc/ld.so.conf.d/opencv4.conf

没有的话就直接新建,然后写入这个内容:

# libc default configuration
/usr/local/lib

保存(似乎是 Ctrl+X,然后 Y 确认写入 Buffer,然后 Enter 确认要把文件命名为默认),然后更新一下配置:

sudo ldconfig

配置pkg-config环境到bash.bashrc

向上面一样,nano 打开 /etc/bash.bashrc

sudo nano /etc/bash.bashrc

然后在文件内容的末尾加上这些:

# Add in the end
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH

保存,然后激活一下:

source /etc/bash.bashrc
sudo updatedb

写/usr/local/lib到ld.so.conf

有时会报错 error while loading shared libraries: libopencv_core.so.*,因此无论如何也应该加一句 /usr/local/lib/etc/ld.so.conf,不赘述,直接进入然后加上这一句就好了:

sudo nano /etc/ld.so.conf

保存,然后更新一下:

sudo ldconfig

检测OpenCV4.4.0安装成功

这样就算是安装完成了,就算你运行:

pkg-config --modversion opencv

然后告诉你找不到这个包也无所谓,因为我们安装的是新版本,要运行与检测的是:

pkg-config --modversion opencv4

输出,如果不行的话就有必要去看看 Package opencv was not found in the pkg-config search path

root@LAPTOP-3SQ4QCQT:/home/optic_css# pkg-config --modversion opencv4
>> 4.4.0

就算是成功了,进一步还可以运行如下指令,试一下代码是否能跑出来:

cd /mnt/c/Users/a1020/Desktop/Reinforcement_ELyou/Demolist/slamdemo/slambook/ch6
mkdir build
cd build
cmake ..
make -j8

OpenCV4.4.0 安装测试 Installation & Examination (Ubuntu18.04, Ubuntu 20.04)的更多相关文章

  1. Pangolin 安装测试 Installation & Examination (Ubuntu 20.04)

    Pangolin 安装测试 Installation & Examination (Ubuntu 20.04) 如题所述,这是一个比较轻松的 Pangolin 安装配置方法,同样是基于 WSL ...

  2. Ubuntu 20.04下源码编译安装ROS 2 Foxy Fitzroy

    ROS 2 Foxy Fitzroy(以下简称Foxy)于2020年6月5日正式发布了,是LTS版本,支持到2023年5月.本文主要根据官方的编译安装教程[1]完成,并记录编译过程中遇到的问题. 1. ...

  3. Ubuntu 20.04上安装MySQL教程,ubuntu安装mysql

    在Ubuntu 20.04上安装MySQL教程 先决条件 确保您以具有sudo特权的用户身份登录. 在Ubuntu上安装MySQL 在撰写本文时,Ubuntu存储库中可用的MySQL的最新版本是MyS ...

  4. 安装MySQL到Ubuntu 20.04

    本文的内容主要来自对How To Install MySQL on Ubuntu 20.04的翻译.在根据该文的指导下,我在自己的Ubuntu 20.04.3 LTS版本中安装了MySQL 8. St ...

  5. Ubuntu 20.04安装Docker

    Docker学习系列文章 入门必备:十本你不容错过的Docker入门到精通书籍推荐 day1.全面的Docker快速入门教程 day2.CentOS 8.4安装Docker day3.Windows1 ...

  6. Ubuntu 20.04.1 安装软件和系统配置脚本

    #!/bin/bash # https://launchpad.net/ubuntu # https://www.easyicon.net # https://download-chromium.ap ...

  7. 树莓派安装 Ubuntu 20.04 LTS 碰壁指南

    树莓派安装 Ubuntu 20.04 LTS 碰壁指南 设备 Raspberry 4B 4+32G 系统 Ubuntu 20.04 LTS 1.镜像下载与烧录 镜像下载地址:https://cdima ...

  8. ubuntu 20.04 编译安装 p 详解

    事情的起因 实验需要安装 p4 环境 我考虑到我自己的电脑性能不足,因此打算在本机安装 github上官方仓库的安装教程老旧,都是在 ubuntu14.04或者ubuntu16.04 我长时间用的li ...

  9. Ubuntu 20.04 Docker 安装并配置

    前言 Docker 的使用能极大地方便我们的开发,减少环境搭建,依赖安装等繁琐且容易出错的问题. 安装 Docker Ubuntu 20.04 官方 apt 源中就有 Docker,我们可以直接通过 ...

随机推荐

  1. 数据库的查询(结合YGGL.sql)

    (如有错误,欢迎指正!) 1.select 语句查询 (1)查询employees表员工部门号和性别,要求消除重复行. mysql> select distinct 员工部门号,性别 from ...

  2. Openwrt_Linux_crontab任务_顺序执行脚本

    Openwrt_Linux_crontab任务_顺序执行脚本 转载注明来源: 本文链接 来自osnosn的博客,写于 2020-12-21. Linux (openwrt,debian,centos. ...

  3. Istio 知多少 | 下一代微服务的守护者

    1. 引言 在写完eShopOnContainers 知多少[12]:Envoy gateways后,就一直想进一步探索Service Mesh,最近刚在极客时间上学完<Service Mesh ...

  4. 基于CefSharp开发(七)浏览器收藏夹菜单

    一.Edge收藏夹菜单分析 如下图所示为Edge收藏夹菜单, 点击收藏夹菜单按钮(红框部分)弹出收藏夹菜单窗体,窗体中包含工具栏(绿框部分)和树型菜单(黄框部分) 工具栏按钮功能分别为添加当前网页到根 ...

  5. MongoDB Sharding(一) -- 分片的概念

    (一)分片的由来随着系统的业务量越来越大,业务系统往往会出现这样一些特点: 高吞吐量 高并发 超大规模的数据量 高并发的业务可能会耗尽服务器的CPU,高吞吐量.超大规模的数据量也会带来内存.磁盘的压力 ...

  6. .NET探索平台条件编译

    前言 今天偶然机会,翻了一下大学期间的书籍<C程序设计>,好吧,当我翻着翻着,翻到了符号常量(#define指令)中,是啊,这是一个预处理器指令,记得在Magicodes.IE中针对平台选 ...

  7. mysql .sock丢时候如何链接数据库

    在mysql服务器本机上链接mysql数据库时,经常会噢出现mysql.sock不存在,导致无法链接的问题,这是因为如果指定localhost作为一个主机名,则mysqladmin默认使用unix套接 ...

  8. 【葵花宝典】一天掌握Docker

    第1章Docker 概述 1-1 Docker是什么 没有虚拟化技术的原始年代 我们仔细想想,在没有计算虚拟化技术的"远古"年代,如果我们要部署一个应用程序(Application ...

  9. linux多路径(multipath)

    https://www.itread01.com/articles/1475909423.html

  10. SAP ERP中权限参数和角色相关表

    SAP版本:S/4 HANA 1809