最近在看 Light Head Rcnn 的 Tensorflow 源码,在 Python3 下需要用到 OpenCV ,鉴于我的 Ubuntu 下已经装了 Python2.7 的 OpenCV2.4.13.7 点击查看安装教程。所以这次在虚拟环境下配置一下 Python3 的 OpenCV,按照以下步骤直接装了最新的 OpenCV4.0.0-pre。
升级一些预安装的软件包:
$ sudo apt-get update
$ sudo apt-get upgrade
安装一些编译 OpenCV 所需要的开发工具:
$ sudo apt-get install build-essential cmake git pkg-config
安装一些用于从磁盘中读取各种图片格式所需要的依赖包:
$ sudo apt-get install libjpeg8-dev libtiff4-dev libjasper-dev libpng12-dev
安装一些用于从磁盘中读取视频所需要的依赖包:
$ sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
安装以后使用 OpenCV 的 GUI 时所需要的 GTK:
$ sudo apt-get install libgtk2.0-dev
安装用于优化 OpenCV 内部各种功能的依赖包,例如矩阵操作:
$ sudo apt-get install libatlas-base-dev gfortran
首先安装 Python 的包管理工具 pip
。安装 Python3 的 pip
:
$ wget https://bootstrap.pypa.io/get-pip.py
$ sudo python3 get-pip.py
注意: 在安装 pip
的时候使用的是 python3,如果不用 python3 的话,默认安装的将是 python2 的。
本文前言中说了:是在虚拟环境下安装 Python3 的 OpenCV。所以在这里搭建 Python3 的虚拟环境需要用到 virtualenv 和 virtualenvwrapper ,下面先使用 pip
安装 virtualenv 和 virtualenvwrapper 。
$ sudo pip3 install virtualenv virtualenvwrapper
注意: 在这里使用的也是 pip3
,而不是 pip
,使用 pip3
安装确保将这两个包装在 Python3 的环境下。
下面就要更新环境变量了,在 ~/.bashrc
文件的最后添加上以下环境变量信息:
# virtualenv and virtualenvwrapper
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh
注意一下在这里是怎么将 VIRTUALENVWRAPPER_PYTHON
指向 Python3 所在的 Ubuntu 系统路径的。
为了确保刚刚配置的环境变量有效,执行以下命令:
$ source ~/.bashrc
然后,创建下面安装 Python3 的 OpenCV 需要使用 cv 虚拟环境:
$ mkvirtualenv cv
这时可以看到终端中用户名的前面有了 (cv) 的标识。目前算是完成了 Python 设置的一半了,下面需要安装 Python3 的开发文件:
$ sudo apt-get install python3.5-dev
我这里的 Python3 的版本是 3.5 ,所以我装的是 python3.5-dev
。
OpenCV 还需要用到 Numpy ,下一步安装 Numpy :
$ pip install numpy
注意: 这一步出错的朋友请移步文末的参考链接,那里有解决方案。
到此,安装 OpenCV 所需要设置的环境都设置完毕,下面开始下载 OpenCV 的源码:
$ git clone https://github.com/Itseez/opencv.git
注意: 文末的参考文章中有安装 OpenCV 的 contrib库 ,目前我还用不到,所以就不占用那个空间去装了,需要的还请移步自取。
下载好源码以后就是编译了:
$ cd opencv
$ mkdir release
$ cd release
$ cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON ..
cmake 命令结束以后就可以看到以下 python3 的信息了:
注意: 在 cmake 以后看到 python3 的信息才能进行下面的操作。
下面开始 OpenCV 的编译操作:
$ make -j4
注意: 上述命令中的 4 根据处理器的内核数来设置,可以加快编译速度。
在编译的时候遇到错误:
fatal error: Eigen/Eigenvalues: No such file or directory
compilation terminated.
解决方法:
重新 cmake ,在 cmake 的时候加入参数 -D WITH_EIGEN=OFF
,然后重新编译就通过了。
在没有报错编译完成之后,可以执行下列命令将 OpenCV 装到系统里:
$ sudo make install
$ sudo ldconfig
在没有错误的情况下执行完以上步骤,执行命令:
$ ls -l /usr/local/lib/python3.5/site-packages/
就可以看到 OpenCV 的相关信息了:
在这里 OpenCV 的名字是 cv2.cpython-35m-x86_64-linux-gnu.so
。
下面为了能在创建的 cv 虚拟环境中使用 OpenCV ,需要将这个 site-packages
文件夹下的 cv2.cpython-35m-x86_64-linux-gnu.so
文件链接到 cv 虚拟环境中:
$ cd ~/.virtualenvs/cv/lib/python3.5/site-packages/
$ ln -s /usr/local/lib/python3.5/site-packages/cv2.cpython-35m-x86_64-linux-gnu.so cv2.so
在上述命令中将 cv2.cpython-35m-x86_64-linux-gnu.so
的名字改成了 cv2.so
,这样在 Python3 中就能直接导入 cv2 了。这时候使用 ls
命令就可以看到 cv2.so
文件了。
如果没有 cv2.so
文件,将不能导入 cv2 。
打开终端,进入创建的 cv 虚拟环境,在 Python 中导入 cv2 查看 OpenCV 的版本:
$ workon cv
$ python
>>> import cv2
>>> cv2.__version__
'4.0.0-pre'
结束,安装成功。
参考:https://www.pyimagesearch.com/2015/07/20/install-opencv-3-0-and-python-3-4-on-ubuntu/
个人网站:心安便是归处
GitHub:oh,ss