Ubuntu16.04安装OpenCV3.1.0

系统:Ubuntu16.04server

CUDA版本:CUDA8.0

Python版本:Python3.5.2

OpenCV版本:OpenCV3.1.0

一、安装依赖项

必备项:

sudo apt-get install build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev numpy
sudo apt-get install python3.5-dev

可选项:

sudo apt-get install checkinstall yasm libtiff5-dev libjpeg-dev libjasper-dev libdc1394-22-dev libxine2-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libv4l-dev python-dev python-numpy libtbb-dev libqt4-dev libgtk2.0-dev libfaac-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev x264 v4l-utils libeigen3-dev 
sudo apt-get install libjpeg8-dev libtiff5-dev libjasper-dev libpng12-dev
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
sudo apt-get install libxvidcore-dev libx264-dev
sudo apt-get install libgtk-3-dev
sudo apt-get install libatlas-base-dev gfortran

注:libgtk-3-dev是OpenCV GUI操作所依赖的库,对于服务器版本来说没有必要安装。

二、下载OpenCV

切换到家目录,使用wget指令下载OpenCV资源。

cd ~
wget -O opencv.zip https://github.com/Itseez/opencv/archive/3.1.0.zip
unzip opencv.zip
wget -O opencv_contrib.zip https://github.com/Itseez/opencv_contrib/archive/3.1.0.zip
unzip opencv_contrib.zip

两个压缩包的名字分别为opencv.zip和opencv_contrib.zip,解压缩后为opencv-3.1.0  opencv_contrib-3.1.0。opencv_contrib3.1.0包含OpenCV的SIFT和SURF功能。在OpenCV 2.4中,SIFT和SURF被包含在OpenCV的默认安装中。 然而,随着OpenCV3的发布,这些软件包已被转移到contrib中。所以完整的OpenCV安装需要编译这两个文件。(注:执行该指令需先安装unzip包)。

三、安装OpenCV

建立一个编译目录,把cmake后的文件都放在这里,路径为:~/opencv-3.1.0/build

cd ~/opencv-3.1.0/
mkdir build
cd build

然后在该目录下Cmake,这里需要注意几个比较重要的参数,比较重要。

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-3.1.0/modules .. 

注:命令中最后的"  .. "(空格+两个点)千万不要忘记。

CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile或者project文件。其中 CMAKE_BUILD_TYPE=Release / DebugOPENCV_EXTRA_MODULES_PATH 就是用来指定要编译的扩展模块,后边加上刚下载的opencv_contrib模块的路径即可。-D 相当于就是定义, -D 可以理解为告诉cmake 后边我要定义一些参数了, 你每定义一个就在前边加上-D就是了。

这里官方文档上还给出了其他一些参数,但是我没用过,这里就不再描述了。有需要的可以查看:http://docs.opencv.org/trunk/d7/d9f/tutorial_linux_install.html。

在此过程中,很有可能会出现错误:ICV: Downloading ippicv_linux_20151201.tgz 超时。解决方法就是网上下载该文件,下载完后替换opencv-3.1.0/3rdparty/ippicv/downloads/linux-*目录下的同名文件,重新cmake。

若Cmake后出现如下信息,Python3 包含Interpreter、Libraries、numpy和packages path,可以继续往下执行。(注:packages path接下来可能会用到)

Ubuntu16.04安装OpenCV3.1.0_第1张图片


在build目录下进行编译:

make -j4 

make是一个命令工具,是一个解释makefile中指令的命令工具,它根据Makefile文件编译源代码、连接、生成目标文件、可执行文件。-j4表示四核并行编译。若在多核编译中报错,可以通过make clean来清理build文件从而改成单核编译,即make。编译时间比较长,请耐心等待。

安装Opencv并更新动态链接库

sudo make install
sudo ldconfig

四、安装后遇到的问题

4.1 Python3环境无法导入cv2

基于Python2环境下安装OpenCV3.1.0可以很顺利的在Python环境中导入cv2包。但python3必须对cv2.cpython-35m-x86_64-linux-gnu.so文件进行修改才可以。

首先查找该文件的位置

locate cv2.cpython-35m-x86_64-linux-gnu.so

然后在该文件夹下执行

sudo mv cv2.cpython-35m-x86_64-linux-gnu.so cv2.so

修改文件名。:若该文件没有位于/usr/local/lib/python3.5/dist-packages/下(系统自带Python的第三方库文件夹为dist-packages,手动安装的则为site-packages),需要再将该文件拷贝到该目录下,因为该目录下存放着安装在Python3下的各种包,也是它的搜索路径。然后即可Import cv2。

4.2 cuda 8.0与OpenCV不兼容导致make过程出错

如果在编译过程中遇到报错(会产生一连串的错误),第一个错误提示信息为:....../graphcuts.cpp: 'NppiGraphcutState' has not been declared是opencv与cuda8.0不兼容导致的。解决方法为打开graphcuts.cpp文件

          #if !defined (HAVE_CUDA) || defined (CUDA_DISABLER)

改为

         #if !defined (HAVE_CUDA) || defined (CUDA_DISABLER) || (CUDART_VERSION>=8000)

五、查看OpenCV版本

终端输入以下命令:

pkg-config --modversion opencv

或进入Python3环境

import cv2
cv2.__version__
即可。



参考文献:

https://www.pyimagesearch.com/2016/10/24/ubuntu-16-04-how-to-install-opencv/

https://blog.csdn.net/jhszh418762259/article/details/52957495

https://www.cnblogs.com/asmer-stone/p/5089764.html

你可能感兴趣的:(深度学习环境搭建,Ubuntu,OpenCV3.1)