WHCSRL 技术网

Ubuntu安装笔记(二):ubuntu18.04编译安装opencv 3.4.0 opencv_contrib3.4.0

下载opencv源码和opencv_contrib扩展包

官网地址:https://opencv.org/releases.html

从opencv官网下载opencv3.4.0以及opencv_contrib(python需要 只是c语言使用不需要)压缩包。将下载的opencv3.4.0及opencv_contrib-3.4.0解压,并将opencv_contrib-3.4.0的文件夹放到opencv3.4.0的文件夹中。

安装相关依赖包

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install build-essential
sudo apt-get install -y libopencv-dev
sudo apt-get install libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff5-dev libdc1394-22-dev         # 处理图像所需的包
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev liblapacke-dev
sudo apt-get install libxvidcore-dev libx264-dev         # 处理视频所需的包
sudo apt-get install libatlas-base-dev gfortran          # 优化opencv功能
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

通过cmake进行编译安装

先进入文件,创建build

cd opencv-3.4.0
mkdir build
# 创建编译文件
cd build
  • 1
  • 2
  • 3
  • 4

如果直接输入cmake … 不出意外opencv会链到系统的python2.7上去(看cache可知),所以需要指定到咱下的anaconda的python3上;

cmake -D WITH_IPP=OFF -D PYTHON_DEFAULT_EXECUTABLE=/home/lqs/anaconda3/bin/python3 -D BUILD_opencv_python3=ON -D BUILD_opencv_python2=OFF -D PYTHON3_EXCUTABLE=/home/naphid/Documents/anaconda3/bin/python3 -D PYTHON3_INCLUDE_DIR=/home/lqs/anaconda3/bin/python3.7m -D PYTHON3_LIBRARY=/home/lqs/anaconda3/lib/libpython3.7m.so.1.0 -D PYTHON_NUMPY_PATH=/home/lqs/anaconda3/lib/python3.7/site-packages -D OPENCV_ENABLE_MEMORY_SANITIZER=ON -D WITH_QT=ON -D ENABLE_CXX11=ON ..^C
  • 1

the same as

cmake 
-D WITH_IPP=OFF 
-D PYTHON_DEFAULT_EXECUTABLE=/home/lqs/anaconda3/bin/python3 
-D BUILD_opencv_python3=ON 
-D BUILD_opencv_python2=OFF 
-D PYTHON3_EXCUTABLE=/home/naphid/Documents/anaconda3/bin/python3 
-D PYTHON3_INCLUDE_DIR=/home/lqs/anaconda3/bin/python3.7m 
-D PYTHON3_LIBRARY=/home/lqs/anaconda3/lib/libpython3.7m.so.1.0 
-D PYTHON_NUMPY_PATH=/home/lqs/anaconda3/lib/python3.7/site-packages 
-D OPENCV_ENABLE_MEMORY_SANITIZER=ON 
-D WITH_QT=ON -D ENABLE_CXX11=ON ..
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

cmake之后就会出现以下界面
在这里插入图片描述
进行make编译,需要很久,静静等待。

make -j8 #这里的8表示线程的数量
  • 1

在这里插入图片描述
编译完了就可以开始安装了

sudo make install
  • 1

在这里插入图片描述

安装完成

完成之后就可以通过import cv2来验证了
在这里插入图片描述

安装注意事项

  • 错误1在这里插入图片描述
    解决办法:如果你没有加入opencv的扩展包,然后放入在里面继续运行
  • 错误2:/home/lqs/Downloads/opencv-3.4.0/build/CMakeFiles/CMakeTmp/CheckIncludeFile.c:1:10: fatal error: linux/videodev.h: 没有那个文件或目录
    解决办法:这个错误的解决方式是cmake 的时候添加 -D ENABLE_CXX11=ON
  • 错误3:linux下报错没有头文件<io.h>那个文件或目录
    解决办法:将/usr/include/86_64-linux-gnu/sys下的io.h复制到/usr/include下面,链接
  • 错误4: linux/videodev.h: 没有那个文件或目录
    解决办法
    1.sudo apt-get install libv4l-dev
    2.sudo ln -s /usr/include/libvl1-videodev.h /usr/include/linux/videodev.h(如果还是不行就删除之后在执行这句)
  • 错误5: sys/videodev.h: 没有那个文件或目录
    解决办法
    1.sudo cp /usr/include/opencv2/videoio/videoio_c.h /usr/include/x86_64-linux-gnu/sys
    2.sudo ln -s /usr/include/x86_64-linux-gnu/sys/videoio_c.h /usr/include/x86_64-linux-gnu/sys/videoio.h
  • 错误6:Looking for ccache - not found
    解决办法sudo apt install ccache
  • 错误7:Found ZLIB: /usr/local/lib/libz.so (found suitable version “1.2.11”, minimum required is “1.2.3”)
    解决办法链接
  • 错误8:~/cv2.cpp:885:34: error: invalid conversion from ‘const char*’ to ‘char*’ [-fpermissive]
    解决办法:打开cv2.cpp 找到885行 将char* str = PyString_AsString(obj)改为char* str = const_cast<char*>(PyString_AsString(obj))
推荐阅读