版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_26239525/article/details/83059905
ubuntu基本环境配置请参考:
Ubuntu16.04 + cuda9.0 + cudnn_v7 + tensorflow-gpu + opencv3.4.2: https://blog.csdn.net/qq_26239525/article/details/82714116
OpenCV3.4.2源码下载:
https://codeload.github.com/opencv/opencv/zip/3.4.2
opencv_contrib-3.4.2.tar.gz下载:
https://codeload.github.com/opencv/opencv_contrib/tar.gz/3.4.2
ippicv_2017u3_lnx_intel64_general_20180518.tgz下载:
https://github.com/opencv/opencv_3rdparty/tree/ippicv/master_[日期]/ippicv
比如我要用的3.4.2要求20180518这个版本,直接把[日期]替换成20180518即可,如下:
https://github.com/opencv/opencv_3rdparty/tree/ippicv/master_20180518/ippicv
face_landmark_model.dat下载:
https://raw.githubusercontent.com/opencv/opencv_3rdparty/8afa57abc8229d611c4937165d20e2a2d9fc5a12/face_landmark_model.dat
The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Carbon support.
If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script)
sudo apt-get install libgtk2.0-dev
sudo apt-get install pkg-config
sudo apt-get install build-essential
sudo apt-get install cmake cmake-gui git 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 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功能
sudo apt-get install ffmpeg
mkdir ~/opencv
# 将下载的文件拷贝到opencv目录下
unzip opencv-3.4.2.zip
tar zxvf 3.4.2.tar.gz
cd ~/opencv
mkdir opencv-3.4.2-build
# 将ippicv_2017u3_lnx_intel64_general_20180518.tgz文件拷贝到~/opencv/opencv-3.4.2-build
# 终端输入
sudo gedit ~/opencv/opencv-3.4.2/3rdparty/ippicv/ippicv.cmake
将47行的:
"https://raw.githubusercontent.com/opencv/opencv_3rdparty/${IPPICV_COMMIT}/ippicv/"
更换成:
"file:///home/x919/opencv/opencv-3.4.2-build" # x919换成自己的用户名
编辑完成,保存退出。
在编译过程中,由于需要从外网下载face_landmark_model.dat
所以需要将之前下载的face_landmark_model.dat放到到本地目录下,以便于编译过程从本地寻找文件,加速安装过程
sudo cp ~/下载/face_landmark_model.dat ~/opencv/opencv-3.4.2/.cache/data/
然后需要更改此face_landmark_model.dat文件的名字
ls ~/opencv/opencv-3.4.2/.cache/data
应该是会有两个文件
cd ~/opencv/opencv-3.4.2/.cache/data
sudo cp face_landmark_model.dat 7505c44ca4eb54b4ab1e4777cb96ac05-face_landmark_model.dat
每台机器应该不一样
到此准备工作就完成了,然后开始安装opencv3.4.2
# 终端输入
cmake-gui
更改这两个文件路径,然后点击configure,然后选择Unix Makefiles,选择Use default native compliers,然后点击Finish。
然后cmake就会载入默认配置。如下图所示:
将CMAKE_BUILD_TYPE更改为Release。然后Search python3,将路径更改为Anaconda下的python3下的路径,如下图所示:
将OPENCV_EXTRA_MODULES更改为以下路径:
然后点击Generate生成配置文件。
接下来进入opencv-3.4.2-build
cd ~/opencv/opencv-3.4.2-build
make -j8
sudo make install
完成编译安装
然后配置系统环境变量:
sudo gedit /etc/ld.so.conf.d/opencv.conf
将以下内容添加进去:
/usr/local/lib
sudo ldconfig #配置库
sudo gedit /etc/bash.bashrc
在文件末尾加入:
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
保存,然后关闭终端使配置生效。
测试:
import cv2
img = cv2.imread('~/opencv入门/image.jpg',1)
cv2.imshow('image',img)
cv2.waitKey (0)
安装完成以后,重启下电脑。
如果导入cv2模块报错,运行下面代码:
pip install opencv-python
如果报出 "libopencv_hdf.so.3.4: cannot open shared object file: No such file or directory"错误,则:
sudo find / -name "libopencv_hdf.so.3.4"
sudo gedit /etc/ld.so.conf.d/opencv.conf
将下句添加到文件末尾:
/home/x919/opencv/opencv-3.4.2-build/lib
sudo ldconfig
重新测试即可正常显示图片。