(树莓派、linux通用)OpenCV3源码方式安装教程(最新3.4.3)

2018年2月24日更新:
发现了之前教程存在的一些小问题,予以改正;
OpenCV目前最新的4.0.0版本已经发布,但博主还没有时间进行测试,可能会稍后再更新4.0.0版本,但总体上需要的东西差不多。
2018年4月12日晚更新:
博主去年下半年一直在考研,所以没有更新,到现在才有时间看下博客,在这里说声抱歉,谢谢大家支持。
目前更新了连带opencv_contrib的编译方式,带opencv_contrib的编译时间会更长一些,大概6-7小时,如果是3b+的话更快一些,大概4-5小时。
另,大家编译的时候一定要用质量好的电源,并把风扇插上,防止编译时因为亏电重启或者烧坏树莓派(博主血的教训)。
——————————————————————————
2017年3月份做了一个在树莓派上驱动双摄像头进行深度感应+人脸识别,从而区别真人人脸与照片的小家伙,没错,就是它了:
这里写图片描述
这里面用到了OpenCV,但是我能找到的安装配置OpenCV的教程真的是各种混乱,在花了数十个小时,踩了无数坑之后,我找出了一条最简单的可以顺利完成OpenCV编译安装的路,在Ubuntu16.04上也测试通过,在这里分享给大家。

首先我们要安装OpenCV所依赖的各种工具和图像视频库:

打开终端(Raspbain和Ubuntu的快捷键都是Ctrl + Alt +t),然后依次执行下列命令,网上很多教程都是放到一起执行的,但是一起执行往往会出现错误,也不好查错。

// 软件源更新
sudo apt-get update 

// 升级本地所有安装包,最新系统可以不升级,版本过高反而需要降级才能安装
sudo apt-get upgrade

// 升级树莓派固件,固件比较新或者是Ubuntu则不用执行
sudo rpi-update

然后安装构建OpenCV的相关工具:

// 安装build-essential、cmake、git和pkg-config
sudo apt-get install build-essential cmake git pkg-config 

之后安装常用图像工具包:

// 安装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 

再安装视频I/O包(注意最后一个包的数字“4”后面是“L”):

sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev

下面安装gtk2.0(树莓派很可能下载错误,更换中科大或者清华源即可,ubuntu有可能出现包版本过高的情况,需要将依赖包降级安装):

sudo apt-get install libgtk2.0-dev

优化函数包:

sudo apt-get install libatlas-base-dev gfortran

如果你希望在Python中使用OpenCV,那么你还需要安装Python的开发包:

sudo apt-get install python-dev python3-dev

恭喜你,执行到这里就把OpenCV的依赖包全部安装好了,之后要开始编译OpenCV源代码了,请大家用wget工具下载到用户目录下(源码要放在有执行权限的位置,不是安装位置),命令如下:

/** 使用wget下载OpenCV源码,觉得慢的话可以到https://github.com/opencv/opencv/releases下载OpenCV的源代码
* tar.gz格式,需要解压好,放到用户目录下
* 但是OpenCV_contrib请大家使用wget,亲测直接到Github下载zip文件的话,会有编译问题
**/

// 下载OpenCV
wget -O opencv-3.4.3.zip https://github.com/Itseez/opencv/archive/3.4.3.zip

// 解压OpenCV
unzip opencv-3.4.3.zip

// 下载OpenCV_contrib库:
wget -O opencv_contrib-3.4.3.zip https://github.com/Itseez/opencv_contrib/archive/3.4.3.zip

// 解压OpenCV_contrib库:
unzip opencv_contrib-3.4.3.zip

找到你下载的源码文件夹并打开,tar.gz解压后文件夹名应该是opencv-3.4.3(版本号可能会变化),git方式下载的文件夹名应该是opencv。

// 打开源码文件夹,这里以我修改文章时最新的3.4.3为例
cd opencv-3.4.3

之后我们新建一个名为release的文件夹用来存放cmake编译时产生的临时文件:

// 新建release文件夹
mkdir release

// 进入release文件夹
cd release

提示!如果希望将其他库跟OpenCV连接起来使用,请提前配置好再进行接下来的编译

设置cmake编译参数,安装目录默认为/usr/local ,注意参数名、等号和参数值之间不能有空格,但每行末尾“\”之前有空格,参数值最后是两个英文的点(注意!如果在root用户下执行cmake命令,请将OPENCV_EXTRA_MODULES_PATH的值改为绝对路径,如:/home/joeya/opencv_contrib-3.4.3/modules):

/** CMAKE_BUILD_TYPE是编译方式
* CMAKE_INSTALL_PREFIX是安装目录
* OPENCV_EXTRA_MODULES_PATH是加载额外模块
* INSTALL_PYTHON_EXAMPLES是安装官方python例程
* BUILD_EXAMPLES是编译例程(这两个可以不加,不加编译稍微快一点点,想要C语言的例程的话,在最后一行前加参数INSTALL_C_EXAMPLES=ON \)
**/

sudo cmake -D CMAKE_BUILD_TYPE=RELEASE \
	-D CMAKE_INSTALL_PREFIX=/usr/local \
    -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-3.4.3/modules \
    -D INSTALL_PYTHON_EXAMPLES=ON \
    -D BUILD_EXAMPLES=ON ..

之后开始正式编译过程(如果之前一步因为网络问题导致cmake下载缺失文件失败的话,可以尝试使用手机热点,并将release文件夹删除掉,重新创建release文件夹并cmake):

/** 编译,以管理员身份,否则容易出错
* make命令参数-j4指允许make使用最多4个线程进行编译
* 所以可以根据自己机器的情况进行更改
**/

sudo make -j4

// 安装
sudo make install

// 更新动态链接库
sudo ldconfig

到这里,OpenCV的编译完成,已经可以正常使用了,下面我提供一个Python语言的测试程序,用来测试OpenCV是否正常:

# -*- coding:utf-8 -*-
import cv2
import numpy as np
cv2.namedWindow("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")

运行之后,显示的图片如下:
这里写图片描述

谢谢大家支持,愿大家都能配置好OpenCV,本教程到此结束!

©️2020 CSDN 皮肤主题: 技术工厂 设计师:CSDN官方博客 返回首页