Ubuntu16.04 python3.5.2 install OpenCV3

    之前初学了python3,在Ubuntu中想安装opencv,可是搭建环境的时候还是出现了很大的问题,头疼不已。最近数字图像处理的课老师布置了大作业,我就想试试看用python3.5.2+opencv3.1.0的组合。这里指出Ubuntu16.04中默认的是python2.7.12但是里面也已经有了python3.5.2,在shell中可以通过python3的方式进入。为了减少因为和我有同样问题的而焦虑,现给出安装步骤。

步骤1:在Ubuntu 16.04中安装OpenCV
首先对之前安装的包和库进行升级

$ sudo apt-get update
$ sudo apt-get upgrade
安装一些开发的工具
$ sudo apt-get install build-essential cmake pkg-config
cmake用来自动配置我们的OpenCV build
OpenCV是一种图像处理和计算机视觉的库,所以需要能够加在不同格式的图像
$ 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
OpenCV GUI操作处理的模块名为highgui,而这个模块依赖于GTK库
$ sudo apt-get install libgtk-3-dev
接下来我们安装在OpenCV中用来优化函数的库,
$ sudo apt-get install libatlas-base-dev gfortran
安装完python3.5的头文件和库,我们就完成了步骤1
$ sudo apt-get install python3.5-dev

步骤2:下载OpenCV的源

这里我们下载的是OpenCV 3.1.0
$ cd ~
$ wget -O opencv.zip https://github.com/Itseez/opencv/archive/3.1.0.zip
$ unzip opencv.zip
当新的OpenCV的版本出来时,我们可以通过官方的网址下载https://github.com/opencv/opencv
然而,我们并没有下载源代码,所以还需要opencv_contrib
$ wget -O opencv_contrib.zip https://github.com/Itseez/opencv_contrib/archive/3.1.0.zip
$ unzip opencv_contrib.zip

步骤3:安装Python环境
第一步就是安装pip啦,

$ cd ~
$ wget https://bootstrap.pypa.io/get-pip.py
$ sudo python get-pip.py
建议大家使用virtualenv 和 virtualenvwrapper,这些Python的包让你能为每个你所建立的工程,分离,独立的Python环境。
再次重申建议大家这样做:
$ sudo pip install virtualenv virtualenvwrapper
$ sudo rm -rf ~/get-pip.py ~/.cache/pip
在安装完virtualenv 和 virtualenvwrapper后,我们需要更新我们的~/.bashrc,进入之后在它的最后加入下面3行代码
# virtualenv and virtualenvwrapper
export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh
然后重新加载变化
$ source ~/.bashrc
**创建你的Python虚拟环境**
$ mkvirtualenv cv -p python3
验证你是否在“cv”的虚拟环境中
$ workon cv

Ubuntu16.04 python3.5.2 install OpenCV3_第1张图片
在你的python虚拟环境中安装NumPy:

$ pip install numpy

步骤4:在Ubuntu 16.04上配置和编译OpenCV

在我们开始前,再次确认你是在cv的虚拟环境中,如果不在,那么在shell中输入workon cv,接下来我们使用CMake来安装和配置我们的build:
$ cd ~/opencv-3.1.0/
$ mkdir build
$ cd build
$ cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D INSTALL_C_EXAMPLES=OFF \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-3.1.0/modules \
-D PYTHON_EXECUTABLE=~/.virtualenvs/cv/bin/python \
-D BUILD_EXAMPLES=ON ..

Ubuntu16.04 python3.5.2 install OpenCV3_第2张图片

如果CMake命令退出时没有出现错误,我们就能编译OpenCV啦:

$ make -j4这里-j表示在编译OpenCV时能控制使用的进程数量,这里作者有4核处理器,所以选择了-j4.如果你在运行过程中出现错误,我的第一选择是运行 make clean命令to flush the build,然后使用单核make:

$ make clean
$ make
下面你能看到一个在Ubuntu 16.04上成功安装OpenCV+Python的界面:

Ubuntu16.04 python3.5.2 install OpenCV3_第3张图片

最后一步在Ubuntu 16.04上真正的安装完OpenCV
$ sudo make install
$ sudo ldconfig

步骤5:完成你的OpenCV安装

在运行sudo make install后,你的OpenCV+Python3的捆绑应在/usr/local/lib/python3.5/site-packages/,再次验证这个使用ls命令:
$ ls -l /usr/local/lib/python3.5/site-packages/
total 1972
-rw-r--r-- 1 root staff 2016816 Sep 13 17:24 cv2.cpython-35m-x86_64-linux-gnu.so
自从OpenCV出来后,我对于这个行为很困惑,但是因为某些原因,当使用Python3支持来编译OpenCV时,输出的cv2.so文件名是不同的。事实上的名字对于你来说各种各样,但是它看起来和cv2.cpython-35m-x86_64-linux-gnu.so有些相似。发生这种情况,我也没有确切的主意,但是有一种简单的修复方式,所有我们需要做的就是重命名文件:
$ cd /usr/local/lib/python3.5/site-packages/
$ sudo mv cv2.cpython-35m-x86_64-linux-gnu.so cv2.so
在重命名cv2.cpython-35m-x86_64-linux-gnu.so到cv2.so,我们能符号链接我们的OpenCV捆绑到cv虚拟环境中的Python3.5:
$ cd ~/.virtualenvs/cv/lib/python3.5/site-packages/
$ ln -s /usr/local/lib/python3.5/site-packages/cv2.so cv2.so

步骤6:测试你得OpenCV安装
1、 打开一个新的终端
2、 执行workon cv来获取cv的Python虚拟环境
3、 尝试导入Python+OpenCV的绑定

shine@ubuntu:~$ workon cv
(cv) shine@ubuntu:~$ python
Python 3.5.2 (default, Nov 17 2016, 17:05:23) 
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>> cv2.__version__
'3.1.0'
>>>
如你所见我能将我的OpenCV捆绑导入到我的Python3.5 shell中。既然你已经安装OpenCV成功,你就能将opencv-3.1.0 and opencv_contrib-3.1.0连同他们的.zip文件一同删除
$ rm -rf opencv-3.1.0 opencv_contrib-3.1.0 opencv.zip opencv_contrib.zip
但是在执行上面两条命令时请小心!

参考原博文:http://www.pyimagesearch.com/2016/10/24/ubuntu-16-04-how-to-install-opencv/

你可能感兴趣的:(python)