前一段时间刚刚做了一个在树莓派上驱动双摄像头进行深度感应+人脸识别,从而区别真人人脸与照片的小家伙,用到了OpenCV,但是我能找到的安装配置OpenCV的教程真的是各种混乱,在花了数十个小时,踩了无数坑之后,我找出了一条最简单的可以顺利完成OpenCV编译安装的路,在Ubuntu16.04上也测试通过,在这里分享给大家。
首先我们要安装OpenCV所依赖的各种工具和图像视频库:
打开终端(Raspbain和Ubuntu的快捷键都是Ctrl + Alt +t),然后依次执行下列命令,网上很多教程都是放到一起执行的,但是一起执行往往会出现错误,也不好查错。
//软件源更新
sudo apt-get update
//升级本地所有安装包,最新系统可以不升级,版本过高反而需要降级才能安装
sudo apt-get upgrade
//升级树莓派固件,固件比较新或者是Ubuntu则不用执行
sudo rpi-update
- 1
- 2
- 3
- 4
- 5
- 6
然后安装构建OpenCV的相关工具:
//安装build-essential、cmake、git和pkg-config
sudo apt-get install build-essential cmake git pkg-config
- 1
- 2
之后安装常用图像工具包:
//安装jpeg格式图像工具包
sudo apt-get install libjpeg8-dev
//安装tif格式图像工具包
sudo apt-get install libtiff5-dev
//安装JPEG-2000图像工具包
sudo apt-get install libjasper-dev
//安装png图像工具包
sudo apt-get install libpng12-dev
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
再安装视频I/O包(注意最后一个包的数字“4”后面是“L”):
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
- 1
下面安装gtk2.0(树莓派很可能下载错误,更换中科大或者清华源即可,ubuntu有可能出现包版本过高的情况,需要将依赖包降级安装):
sudo apt-get install libgtk2.0-dev
- 1
优化函数包:
sudo apt-get install libatlas-base-dev gfortran
- 1
恭喜你,执行到这里就把OpenCV的依赖包全部安装好了,之后要开始编译OpenCV源代码了,请大家到https://github.com/opencv/opencv/releases 下载OpenCV的源代码(tar.gz格式,需要解压好)放到用户目录下(源码要放在有执行权限的位置,不是安装位置)或者是用git工具clone到所需目录下,git命令如下:
//使用git下载OpenCV源码,但推荐直接下载tar.gz,tar.gz速度较快
git clone https://github.com/opencv/opencv.git
- 1
- 2
找到你下载的源码文件夹并打开,tar.gz解压后文件夹名应该是opencv-3.2.0(版本号可能会变化),git方式下载的文件夹名应该是opencv。
//打开源码文件夹,这里以我发表文章时最新的3.2.0为例
cd opencv-3.2.0
- 1
- 2
之后我们新建一个名为release的文件夹用来存放cmake编译时产生的临时文件:
//新建release文件夹
mkdir release
//进入release文件夹
cd release
- 1
- 2
- 3
- 4
设置cmake编译参数,安装目录默认为/usr/local:
//CMAKE_BUILD_TYPE是编译方式,CMAKE_INSTALL_PREFIX是安装目录
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local ..
- 1
- 2
- 3
之后开始正式编译过程:
//编译
sudo make
//安装
sudo make install
//更新动态链接库
sudo ldconfig
- 1
- 2
- 3
- 4
- 5
- 6
到这里,OpenCV的编译完成,已经可以正常使用了,下面我提供一个Python语言的测试程序,用来测试OpenCV是否正常:
# -*- coding:utf-8 -*-
import cv2
import numpy as np
cv2.nameWindow("gray")
img = np.zeros((512,512),np.uint8)#生成一张空的灰度图像
cv2.line(img,(0,0),(511,511),255,5)#绘制一条白色直线
cv2.imshow("gray",img)#显示图像
#循环等待,按q键退出
while True:
key=cv2.waitKey(1)
if key==ord("q"):
break
cv2.destoryWindow("gray")
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
运行之后,显示的图片如下:
谢谢大家支持,愿大家都能配置好OpenCV,本教程到此结束!
<link rel="stylesheet" href="http://static.blog.csdn.net/public/res-min/markdown_views.css?v=2.0">
</div>