文章目录

1. 下载OpenCV和OpenCV-contrib
2. 安装依赖包
3. 安装opencv和opencv_contrib
3.1 解压
3.2 将解压后的contrib文件移动至opencv-3.4.13文件下
3.3 在opencv-3.4.5文件夹中新建build文件夹用于后续编译和生成
3.4 进入bulid文件夹并进行第一次cmake
3.5 安装
4. 测试
5. 后续问题
参考

1. 下载OpenCV和OpenCV-contrib

  • 注意:下面两个需要下载同一版本。
  • 下载OpenCV:OpenCV官网,选择source下载。
  • 下载OpenCV-contrib:OpenCV-contrib,选择zip下载。

2. 安装依赖包

sudo apt-get update
sudo apt-get upgrade
//依赖包
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 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

  • 若报错如下:

XXX@XXX:~/Files/opencv-3.1.0$ sudo apt-get install libjasper-dev
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package libjasper-dev

  • 执行:

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

3. 安装opencv和opencv_contrib

3.1 解压

sudo unzip opencv-3.4.13.zip

sudo unzip opencv_contrib-3.4.13.zip

3.2 将解压后的contrib文件移动至opencv-3.4.13文件下

sudo cp -r opencv_contrib-3.4.5 opencv-3.4.5

3.3 在opencv-3.4.5文件夹中新建build文件夹用于后续编译和生成

cd opencv-3.4.5                               #进入opencv文件夹

sudo mkdir build                              #建立build文件夹方便后续操作

3.4 进入bulid文件夹并进行第一次cmake

cd build

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_GTK=ON -D OPENCV_GENERATE_PKGCONFIG=YES -D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib-3.4.13/modules -DOPENCV_ENABLE_NONFREE=True ..

这步可能会卡在IPPICV: Download: ippicv_2020_lnx_intel64_20191018_general.tgz,附上手动下载链接:ippicv_2020_lnx_intel64_20191018_general.tgz
在“/opencv3.4.13/3rdparty/ippicv/ippicv.cmake”注释掉第 16 行,添加一行:

set(OPENCV_ICV_NAME "file:///home/自己的用户名/下载/ippicv_2020_lnx_intel64_20191018_general.tgz") # 手动添加

  • 编译

sudo make -j16  #j后面的数字代表用几个线程编译,此为16线程

缺少文件
将这些文件下载然后放置到opencv_contrib/modules/xfeatures2d/src/ 路径下即可。
当然,这些文件的下载路径可以在cmake//日志中查看,直接复制其下载地址到网页可以看该到文件的源码,直接拷贝源码并生成同名文件然后放置到opencv_contrib/modules/xfeatures2d/src/ 路径下即可。
或者从百度网盘中下载,然后解压并将这些文件放置到opencv_contrib/modules/xfeatures2d/src/ 路径下即可。
百度云链接:https://pan.baidu.com/s/1I4MhbkhP0Au6na2QZdjpGg
提取码:a2c1

3.5 安装

sudo make install

报错如下:

解决方法:
百度云链接:https://pan.baidu.com/s/1bN1iXJZbA7Fx59rUhnGYiw 密码:wjl1
放到ippicv文件夹中,再次安装,成功。

4. 测试

  • 进入目录opencv-3.4.6/samples/cpp/example_cmake

cmake .
make
./opencv_example

效果如下:

在 Ubuntu16.04 下安装时,测试的时候报错如下:

./opencv_example: error while loading shared libraries: libopencv_highgui.so.3.4: cannot open shared object file: No such file or directory

原因是环境没有配置,Ubuntu18.04下没有出现这个问题,参考解决方案

5. 后续问题

在Ubuntu18.04下python3 import cv2时报错如下:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'cv2'

然而使用python2可以正确import,解决方法(清华源):

pip install opencv-python

参考

[1] Ubuntu 18.04.2 下源码安装OpenCV 3.4.6与opencv_contrib-3.4.6笔记
[2] ubuntu 18.04 安装opencv3.4.5+opencv_contrib
[3] 源码编译opencv卡在IPPICV: Download: ippicv_2017u3_lnx_intel64_general_20170822.tgz解决办法
[4] OpenCV编译遇到的一个常见错误-./bin: error while loading shared libraries: libopencv_highgui.so.3.2: cannot open