OpenCV4.4.0 安装测试 Installation & Examination (Ubuntu18.04, Ubuntu 20.04)
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/local
的include/
,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
方面的编译都给关掉了; - 为了使用相关的
example
和doc
,把这两个对应的开关打开;
意外Ⅳ. 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
,在其后首先列出的是文件名,接着是下载地址):
"/home/optic_css/opencv-4.4.0/.cache/ade/b624b995ec9c439cbc2e9e6ee940d3a2-v0.1.1f.zip" "https://github.com/opencv/ade/archive/v0.1.1f.zip"
"/home/optic_css/opencv-4.4.0/.cache/xfeatures2d/boostdesc/0ea90e7a8f3f7876d450e4149c97c74f-boostdesc_bgm.i" "https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_bgm.i"
"/home/optic_css/opencv-4.4.0/.cache/xfeatures2d/boostdesc/232c966b13651bd0e46a1497b0852191-boostdesc_bgm_bi.i" "https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_bgm_bi.i"
"/home/optic_css/opencv-4.4.0/.cache/xfeatures2d/boostdesc/324426a24fa56ad9c5b8e3e0b3e5303e-boostdesc_bgm_hd.i" "https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_bgm_hd.i"
"/home/optic_css/opencv-4.4.0/.cache/xfeatures2d/boostdesc/202e1b3e9fec871b04da31f7f016679f-boostdesc_binboost_064.i" "https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_binboost_064.i"
"/home/optic_css/opencv-4.4.0/.cache/xfeatures2d/boostdesc/98ea99d399965c03d555cef3ea502a0b-boostdesc_binboost_128.i" "https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_binboost_128.i"
"/home/optic_css/opencv-4.4.0/.cache/xfeatures2d/boostdesc/e6dcfa9f647779eb1ce446a8d759b6ea-boostdesc_binboost_256.i" "https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_binboost_256.i"
"/home/optic_css/opencv-4.4.0/.cache/xfeatures2d/boostdesc/0ae0675534aa318d9668f2a179c2a052-boostdesc_lbgm.i" "https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_lbgm.i"
"/home/optic_css/opencv-4.4.0/.cache/xfeatures2d/vgg/e8d0dcd54d1bcfdc29203d011a797179-vgg_generated_48.i" "https://raw.githubusercontent.com/opencv/opencv_3rdparty/fccf7cd6a4b12079f73bbfb21745f9babcd4eb1d/vgg_generated_48.i"
"/home/optic_css/opencv-4.4.0/.cache/xfeatures2d/vgg/7126a5d9a8884ebca5aea5d63d677225-vgg_generated_64.i" "https://raw.githubusercontent.com/opencv/opencv_3rdparty/fccf7cd6a4b12079f73bbfb21745f9babcd4eb1d/vgg_generated_64.i"
"/home/optic_css/opencv-4.4.0/.cache/xfeatures2d/vgg/7cd47228edec52b6d82f46511af325c5-vgg_generated_80.i" "https://raw.githubusercontent.com/opencv/opencv_3rdparty/fccf7cd6a4b12079f73bbfb21745f9babcd4eb1d/vgg_generated_80.i"
"/home/optic_css/opencv-4.4.0/.cache/xfeatures2d/vgg/151805e03568c9f490a5e3a872777b75-vgg_generated_120.i" "https://raw.githubusercontent.com/opencv/opencv_3rdparty/fccf7cd6a4b12079f73bbfb21745f9babcd4eb1d/vgg_generated_120.i"
于是手动一个一个地把它们下载下来,放在路径 /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)的更多相关文章
- Pangolin 安装测试 Installation & Examination (Ubuntu 20.04)
Pangolin 安装测试 Installation & Examination (Ubuntu 20.04) 如题所述,这是一个比较轻松的 Pangolin 安装配置方法,同样是基于 WSL ...
- Ubuntu 20.04下源码编译安装ROS 2 Foxy Fitzroy
ROS 2 Foxy Fitzroy(以下简称Foxy)于2020年6月5日正式发布了,是LTS版本,支持到2023年5月.本文主要根据官方的编译安装教程[1]完成,并记录编译过程中遇到的问题. 1. ...
- Ubuntu 20.04上安装MySQL教程,ubuntu安装mysql
在Ubuntu 20.04上安装MySQL教程 先决条件 确保您以具有sudo特权的用户身份登录. 在Ubuntu上安装MySQL 在撰写本文时,Ubuntu存储库中可用的MySQL的最新版本是MyS ...
- 安装MySQL到Ubuntu 20.04
本文的内容主要来自对How To Install MySQL on Ubuntu 20.04的翻译.在根据该文的指导下,我在自己的Ubuntu 20.04.3 LTS版本中安装了MySQL 8. St ...
- Ubuntu 20.04安装Docker
Docker学习系列文章 入门必备:十本你不容错过的Docker入门到精通书籍推荐 day1.全面的Docker快速入门教程 day2.CentOS 8.4安装Docker day3.Windows1 ...
- Ubuntu 20.04.1 安装软件和系统配置脚本
#!/bin/bash # https://launchpad.net/ubuntu # https://www.easyicon.net # https://download-chromium.ap ...
- 树莓派安装 Ubuntu 20.04 LTS 碰壁指南
树莓派安装 Ubuntu 20.04 LTS 碰壁指南 设备 Raspberry 4B 4+32G 系统 Ubuntu 20.04 LTS 1.镜像下载与烧录 镜像下载地址:https://cdima ...
- ubuntu 20.04 编译安装 p 详解
事情的起因 实验需要安装 p4 环境 我考虑到我自己的电脑性能不足,因此打算在本机安装 github上官方仓库的安装教程老旧,都是在 ubuntu14.04或者ubuntu16.04 我长时间用的li ...
- Ubuntu 20.04 Docker 安装并配置
前言 Docker 的使用能极大地方便我们的开发,减少环境搭建,依赖安装等繁琐且容易出错的问题. 安装 Docker Ubuntu 20.04 官方 apt 源中就有 Docker,我们可以直接通过 ...
随机推荐
- 数据库的查询(结合YGGL.sql)
(如有错误,欢迎指正!) 1.select 语句查询 (1)查询employees表员工部门号和性别,要求消除重复行. mysql> select distinct 员工部门号,性别 from ...
- Openwrt_Linux_crontab任务_顺序执行脚本
Openwrt_Linux_crontab任务_顺序执行脚本 转载注明来源: 本文链接 来自osnosn的博客,写于 2020-12-21. Linux (openwrt,debian,centos. ...
- Istio 知多少 | 下一代微服务的守护者
1. 引言 在写完eShopOnContainers 知多少[12]:Envoy gateways后,就一直想进一步探索Service Mesh,最近刚在极客时间上学完<Service Mesh ...
- 基于CefSharp开发(七)浏览器收藏夹菜单
一.Edge收藏夹菜单分析 如下图所示为Edge收藏夹菜单, 点击收藏夹菜单按钮(红框部分)弹出收藏夹菜单窗体,窗体中包含工具栏(绿框部分)和树型菜单(黄框部分) 工具栏按钮功能分别为添加当前网页到根 ...
- MongoDB Sharding(一) -- 分片的概念
(一)分片的由来随着系统的业务量越来越大,业务系统往往会出现这样一些特点: 高吞吐量 高并发 超大规模的数据量 高并发的业务可能会耗尽服务器的CPU,高吞吐量.超大规模的数据量也会带来内存.磁盘的压力 ...
- .NET探索平台条件编译
前言 今天偶然机会,翻了一下大学期间的书籍<C程序设计>,好吧,当我翻着翻着,翻到了符号常量(#define指令)中,是啊,这是一个预处理器指令,记得在Magicodes.IE中针对平台选 ...
- mysql .sock丢时候如何链接数据库
在mysql服务器本机上链接mysql数据库时,经常会噢出现mysql.sock不存在,导致无法链接的问题,这是因为如果指定localhost作为一个主机名,则mysqladmin默认使用unix套接 ...
- 【葵花宝典】一天掌握Docker
第1章Docker 概述 1-1 Docker是什么 没有虚拟化技术的原始年代 我们仔细想想,在没有计算虚拟化技术的"远古"年代,如果我们要部署一个应用程序(Application ...
- linux多路径(multipath)
https://www.itread01.com/articles/1475909423.html
- SAP ERP中权限参数和角色相关表
SAP版本:S/4 HANA 1809