近期由于项目需要,要用到计算机视觉识别,所以折腾起了OpenCV,虽然安装过程曲折漫长,但是配合Python使用起来体验还是相当不错的。在此记录OpenCV安装编译过程。
系统环境:Ubuntu16.04
安装软件:OpenCV3.3.0+Python2.7.12
更新系统安装包:
1 | sudo apt update |
安装一些开发者工具:
1 | sudo apt-get install build-essential cmake pkg-config |
其中pkg-config包很有可能已经默认安装了,以防万一,还是将它添加进去。cmake程序是用来之后编译OpenCV的。
1 | sudo apt-get install libjpeg8-dev libtiff5-dev |
以上安装包用于OpenCV处理JPEG,PNG,TIFF等图片。对于视频,可以用以下安装的包进行逐帧处理。
1 | sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev |
处理OpenCV GUI操作的模块highgui依赖于GTK库,所以还要安装GTK库
1 | sudo apt-get install libgtk-3-dev |
安装优化模块
1 | sudo apt-get install libatlas-base-dev gfortran |
安装Python开发相关文件和库
1 | sudo apt-get install python2.7-dev python3.5-dev |
下载OpenCV源代码:
1 | cd ~ |
可以检查OpenCV官方在Github上推出的新版本来代替wget
后面.zip
前的版本号
传送门:OpenCV Github
还需要下载opencv_contrib库
1 | wget -O opencv_contrib.zip https://github.com/Itseez/opencv_contrib/archive/3.3.0.zip |
同样可以将版本号替换为新版本
传送门:opencv_contrib
注意替换新版本时要保持你的opencv和opencv_contrib的版本号一致
设置Python环境:
首先确保你已经安装了pip安装工具
为了保持系统环境的干净,我决定安装virtualenv和virtuanenvwrapper。这些工具允许你在一个独立于系统的虚拟环境下工作。
安装相关工具:
1 | sudo pip install virtualenv virtualenvwrappper |
之后我们需要更新一下用户主目录下的.bashrc
,打开该文件,在文件末尾添加如下内容:
1 | virtualenv and virtualenvwrapper |
最后重新执行.bashrc
时,可能会报错:
1 | /usr/bin/python: No module named virtualenvwrapper |
由于ubuntu安装有两个版本的Python,而安装virtualenvwrapper是用的是pip3,但系统默认运行的是Python2,Python2中缺少一些模块。virtualenvwrapper.sh文件部分代码如下:
1 | Locate the global Python where virtualenvwrapper is installed. |
当不存在VIRTUALENVWRAPPER_PYTHON环境时,会默认选择使用which python
所以还需要添加环境变量:
1 | VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3 |
选择依赖的Python版本(Python2或Python3)创建虚拟环境
1 | mkvirtualenv opencvwork -p python2 |
这里我选择Python2,创建名为opencvwork的虚拟环境,相关目录在~/.virtualenv
下
然后进入虚拟环境
1 | workon opencvwork |
之后终端提示符开头会有相关标识
安装Numpy(在虚拟环境下)
1 | pip install numpy |
配置编译OpenCV:
在虚拟环境下
1 | cd ~/opencv-3.3.0/ |
如果编译出现错误:stdlib.h: No such file or directory
那需要在Cmake选项中添加-D ENABLE_PRECOMILED_HEADERS=OFF
安装后返回的界面中Python项应该有Interpreter,Libraries,numpy以及packages path项目列出(对应于你所选的Python版本)
确认CMake执行无误后,就可以编译OpenCV了:
1 | make -j4 |
其中数字4可以换为你电脑上的cpu核心数
1 | make clean |
执行成功后就可以将OpenCV安装到Ubuntu上:
1 | sudo make install |
结束OpenCV安装:
以上命令均成功执行后,Python+OpenCV相关文件会保存在/usr/local/lib/python-2.7/site-packages/
(对应你之前选择的Python版本)
之后创建一符号链接: 1
2$ cd ~/.virtualenv/opencvwork/lib/python2.7/site-packages/
$ ln -s /usr/local/lib/python2.7/site-packages/cv2.so cv2.so/usr/local/lib/python2.7/dist-packages
下
简单的检测OpenCV安装状况:
1 | cd ~ |
安装成功!
文末附上一OpenCV3.3.0官方教程: OpenCV3.3.0