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

from:https://blog.csdn.net/leaves_joe/article/details/67656340

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
  • 恭喜你,执行到这里就把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.1.zip https://github.com/Itseez/opencv/archive/3.4.1.zip
// 解压OpenCV
unzip opencv-3.4.1.zip
// 下载OpenCV_contrib库:
wget -O opencv_contrib-3.4.1.zip https://github.com/Itseez/opencv_contrib/archive/3.4.1.zip
// 解压OpenCV_contrib库:
unzip opencv_contrib-3.4.1.zip
  • 找到你下载的源码文件夹并打开,tar.gz解压后文件夹名应该是opencv-3.4.1(版本号可能会变化),git方式下载的文件夹名应该是opencv。
// 打开源码文件夹,这里以我修改文章时最新的3.4.1为例
cd opencv-3.4.1
  • 之后我们新建一个名为release的文件夹用来存放cmake编译时产生的临时文件:
// 新建release文件夹
mkdir release
// 进入release文件夹
cd release
  • 设置cmake编译参数,安装目录默认为/usr/local ,注意参数名、等号和参数值之间不能有空格,但每行末尾“\”之前有空格,参数值最后是两个英文的点:
// 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.1/modules \
    -D INSTALL_PYTHON_EXAMPLES=ON \
    -D BUILD_EXAMPLES=ON ..
  • 之后开始正式编译过程(如果之前一步因为网络问题导致cmake下载缺失文件失败的话,可以尝试使用手机热点,并将release文件夹删除掉,重新创建release文件夹并cmake):
// 编译,以管理员身份,否则容易出错
sudo make
// 安装
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,本教程到此结束!

你可能感兴趣的:(Python学习笔记)