Simplestory's Blog

Linux下安装OpenCV

Word count: 1.1kReading time: 5 min
2017/10/20

近期由于项目需要,要用到计算机视觉识别,所以折腾起了OpenCV,虽然安装过程曲折漫长,但是配合Python使用起来体验还是相当不错的。在此记录OpenCV安装编译过程。

系统环境:Ubuntu16.04

安装软件:OpenCV3.3.0+Python2.7.12

更新系统安装包:

1
2
$ sudo apt update
$ sudo apt upgrade

安装一些开发者工具:

1
$ sudo apt-get install build-essential cmake pkg-config

其中pkg-config包很有可能已经默认安装了,以防万一,还是将它添加进去。cmake程序是用来之后编译OpenCV的。

1
2
$ sudo apt-get install libjpeg8-dev libtiff5-dev
$ sudo apt-get install libjasper-dev libpng12-dev

以上安装包用于OpenCV处理JPEG,PNG,TIFF等图片。对于视频,可以用以下安装的包进行逐帧处理。

1
2
$ sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev
$ sudo apt-get install libv4l-dev libxvidcore-dev libx264-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
2
3
$ cd ~
$ wget -O opencv.zip https://github.com/Itseez/openCV/archive/3.3.0.zip
$ unzip opencv.zip

可以检查OpenCV官方在Github上推出的新版本来代替wget后面.zip前的版本号

传送门:OpenCV Github

还需要下载opencv_contrib库

1
2
$ wget -O opencv_contrib.zip https://github.com/Itseez/opencv_contrib/archive/3.3.0.zip
$ unzip opencv_contrib.zip

同样可以将版本号替换为新版本

传送门:opencv_contrib

注意替换新版本时要保持你的opencv和opencv_contrib的版本号一致

设置Python环境:

首先确保你已经安装了pip安装工具

为了保持系统环境的干净,我决定安装virtualenv和virtuanenvwrapper。这些工具允许你在一个独立于系统的虚拟环境下工作。

安装相关工具:

1
2
$ sudo pip install virtualenv virtualenvwrappper
$ sudo rm -rf ~/.cache/pip

之后我们需要更新一下用户主目录下的.bashrc,打开该文件,在文件末尾添加如下内容:

1
2
3
# virtualenv and virtualenvwrapper
export $WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh

最后重新执行.bashrc时,可能会报错:

1
2
3
4
5
6
/usr/bin/python: No module named virtualenvwrapper  
virtualenvwrapper.sh: There was a problem running the initialization hooks.
If Python could not import the module virtualenvwrapper.hook_loader,
check that virtualenvwrapper has been installed for
VIRTUALENVWRAPPER_PYTHON=/usr/bin/python and that PATH is
set properly.

由于ubuntu安装有两个版本的Python,而安装virtualenvwrapper是用的是pip3,但系统默认运行的是Python2,Python2中缺少一些模块。virtualenvwrapper.sh文件部分代码如下:

1
2
3
4
# Locate the global Python where virtualenvwrapper is installed.  
if [ "$VIRTUALENVWRAPPER_PYTHON" = "" ] then
VIRTUALENVWRAPPER_PYTHON="$(command \which python)"
fi

当不存在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
2
3
4
5
6
7
8
9
10
$ cd ~/opencv-3.3.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.3.0/modules \
-D PYTHON_EXECUTABLE=~/.virtualenvs/cv/bin/python \
-D BUILD_EXAMPLES=ON ..

如果编译出现错误: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
2
$ make clean
$ make

执行成功后就可以将OpenCV安装到Ubuntu上:

1
2
$ sudo make install
$ sudo ldconfig

结束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
有时候cv2.so可能会在/usr/local/lib/python2.7/dist-packages

简单的检测OpenCV安装状况:

1
2
3
4
5
6
7
8
9
10
$ cd ~
$ workon opencvwork
$ python
Python 2.7.12 (default, Nov 19 2016, 06:48:10)
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>> cv2.__version__
'3.3.0'
>>>

安装成功!

文末附上一OpenCV3.3.0官方教程: OpenCV3.3.0

致谢:

Adrian Rosebrock

小小攻城狮

Hello World

CATALOG
  1. 1. 更新系统安装包:
  2. 2. 安装一些开发者工具:
  3. 3. 下载OpenCV源代码:
  4. 4. 设置Python环境:
  5. 5. 配置编译OpenCV:
  6. 6. 结束OpenCV安装:
  7. 7. 简单的检测OpenCV安装状况:
  8. 8. 致谢: