[转载]http://blog.topspeedsnail.com/archives/4755
Ubuntu 16.04编译安装OpenCV(Python)
本帖记录在Ubuntu 16.04上安装OpenCV的步骤,并分别安装Python 2和Python 3的绑定。如果你只用C++接口,可以忽略Python的安装。
Ubuntu 16.04系统默认安装了两个Python版本:Python2核Python3,默认的版本还是Python2。本帖安装的OpenCV同时支持这两个版本。
#1 安装OpenCV依赖
升级系统:
1
2
|
$
sudo
apt
-
get
update
$
sudo
apt
-
get
upgrade
|
安装基本编译工具:
1
|
$
sudo
apt
-
get
install
build
-
essential
cmake
pkg
-
config
|
由于OpenCV是计算机视觉库,总需要加载一些图像文件( JPEG, PNG, TIFF)。使用下面命令安装一些必要的图像库:
1
|
$
sudo
apt
-
get
install
libjpeg8
-
dev
libtiff5
-
dev
libjasper
-
dev
libpng12
-
dev
|
除了图片之外,OpenCV还要处理视频文件。使用下面命令安装一些视频编解码库:
1
2
|
$
sudo
apt
-
get
install
libavcodec
-
dev
libavformat
-
dev
libswscale
-
dev
libv4l
-
dev
$
sudo
apt
-
get
install
libxvidcore
-
dev
libx264
-
dev
|
OpenCV的GUI模块highgui依赖Gtk。安装gtk库:
1
|
$
sudo
apt
-
get
install
libgtk
-
3
-
dev
|
下面安装一些可以提高OpenCV性能的库,如矩阵操作:
1
|
$
sudo
apt
-
get
install
libatlas
-
base
-
dev
gfortran
|
安装Python2和Python3的开发库:
1
|
$
sudo
apt
-
get
install
python2
.
7
-
dev
python3
.
5
-
dev
|
#2 下载OpenCV源码
目前OpenCV的最新稳定版是3.1.0,你可以去Github OpenCV项目主页查看最新版本。
1
2
3
|
$
cd
~
$
wget
-
O
opencv
.zip
https
:
/
/
github
.com
/
Itseez
/
opencv
/
archive
/
3.1.0.zip
$
unzip
opencv
.zip
|
下载和OpenCV版本对应的opencv_contrib(一些扩展功能和non-free代码):
1
2
|
$
wget
-
O
opencv_contrib
.zip
https
:
/
/
github
.com
/
Itseez
/
opencv_contrib
/
archive
/
3.1.0.zip
$
unzip
opencv_contrib
.zip
|
注意:opencv和opencv_contrib的版本要一致。
#3 创建Python虚拟环境
虚拟环境可以保持Python开发环境的干净整洁,强烈建议使用虚拟环境。
首先安装pip:
1
2
3
|
$
wget
https
:
/
/
bootstrap
.pypa
.io
/
get
-
pip
.py
$
sudo
python
get
-
pip
.py
$
rm
get
-
pip
.py
|
安装virtualenv:
1
|
$
sudo
pip
install
virtualenv
virtualenvwrapper
|
在~/.bashrc文件中添加如下环境变量:
1
2
|
export
WORKON_HOME
=
$HOME
/
.virtualenvs
source
/
usr
/
local
/
bin
/
virtualenvwrapper
.sh
|
使环境变量生效:
1
|
$
source
~
/
.bashrc
|
创建Python虚拟环境:
1
2
|
$
mkvirtualenv
cv2
-
p
python2
# python 2
$
mkvirtualenv
cv3
-
p
python3
# python 3
|
切换工作目录:
1
|
$
workon
cv2
/
cv3
|
分别在cv2、cv3虚拟环境安装numpy:
1
|
$
pip
install
numpy
|
#4 编译OpenCV
激活要安装的Python虚拟环境:
1
|
$
workon
cv
[
2
/
3
]
# Python2->cv2 Python3->cv3
|
编辑OpenCV:
1
2
3
4
5
6
7
8
9
10
|
$
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
[
2
/
3
]
/
bin
/
python
\
# 使用cv2或cv3替换cv[2/3]
-
D
BUILD_EXAMPLES
=
ON
.
.
# 我在编译例子时遇到错误,把它改为OFF通过
|
编译:
1
|
$
make
|
安装:
1
2
|
$
sudo
make
install
$
sudo
ldconfig
|
#5 完成OpenCV的安装
Python 2.7:
OpenCV模块位于/usr/local/lib/python-2.7/site-packages/
目录。
创建链接:
1
2
|
$
cd
~
/
.virtualenvs
/
cv2
/
lib
/
python2
.
7
/
site
-
packages
/
$
ln
-
s
/
usr
/
local
/
lib
/
python2
.
7
/
site
-
packages
/
cv2
.so
cv2
.so
|
Python 3.5:
OpenCV模块位于/usr/local/lib/python3.5/site-packages/
目录。
为Python3编译的模块名字不是cv.so,而是cv2.cpython-35m-x86_64-linux-gnu.so,系统不同名字也不同。重命名:
1
2
|
$
cd
/
usr
/
local
/
lib
/
python3
.
5
/
site
-
packages
/
$
sudo
mv
cv2
.cpython
-
35m
-
x86_64
-
linux
-
gnu
.so
cv2
.so
|
创建链接:
1
2
|
$
cd
~
/
.virtualenvs
/
cv
/
lib
/
python3
.
5
/
site
-
packages
/
$
ln
-
s
/
usr
/
local
/
lib
/
python3
.
5
/
site
-
packages
/
cv2
.so
cv2
.so
|
测试安装:
1
2
3
4
5
6
7
8
9
10
|
$
cd
~
$
workon
cv3/
cv2
$
python
Python
3.5.2
(
default
,
Jul
5
2016
,
12
:
43
:
10
)
[
GCC
5.4.0
20160609
]
on
linux
Type
"help"
,
"copyright"
,
"credits"
or
"license"
for
more
information
.
>>>
import
cv2
>>>
cv2
.__version__
'3.1.0'
>>>
|
安装完成。
我在编译OpenCV时遇到的错误(BUILD_EXAMPLES=OFF):
1
2
3
4
5
6
7
8
9
10
|
[
82
%
]
Linking
CXX
executable
.
.
/
.
.
/
bin
/
cpp
-
example
-
stereo_match
/
usr
/
lib
/
gcc
/
x86_64
-
linux
-
gnu
/
5
/
.
.
/
.
.
/
.
.
/
x86_64
-
linux
-
gnu
/
crt1
.
o
:
In
function
`
_start
':
(.text+0x20): undefined reference to `main'
collect2
:
error
:
ld
returned
1
exit
status
samples
/
cpp
/
CMakeFiles
/
example_stereo_match
.
dir
/
build
.
make
:
135
:
recipe
for
target
'bin/cpp-example-stereo_match'
failed
make
[
2
]
:
*
*
*
[
bin
/
cpp
-
example
-
stereo_match
]
Error
1
CMakeFiles
/
Makefile2
:
20549
:
recipe
for
target
'samples/cpp/CMakeFiles/example_stereo_match.dir/all'
failed
make
[
1
]
:
*
*
*
[
samples
/
cpp
/
CMakeFiles
/
example_stereo_match
.
dir
/
all
]
Error
2
Makefile
:
160
:
recipe
for
target
'all'
failed
make
:
*
*
*
[
all
]
Error
2
|
其它安装OpenCV的方法
1)安装Ubuntu默认仓库中的OpenCV:
1
|
$
sudo
apt
install
libopencv
-
dev
python
-
opencv
|
版本旧,不支持Python3。
2)使用OpenCV安装脚本:
1
2
|
$
wget
https
:
/
/
github
.com
/
milq
/
scripts
-
ubuntu
-
debian
/
blob
/
master
/
install
-
opencv
.sh
$
bash
install
-
opencv
.sh
|