1、实验前准备

您当前位置: 首页 > Pi-motion 树莓派AI视觉云台 > 3、课程讲解

face_detect_orgin.zip  点击下载

本教程说明:该教程适用于刚接触计算机视觉开发或者对计算机视觉开发感兴趣的读者,同时涉及到一些计算机语音技术和GPIO控制。如果是大神级别的任务,绝对不适合。本教程来自于笔者开发经验,希望可以帮助大家 在学习的道路上少走弯路。程序开发环境基于 python2.7,OpenCV 3.4.0/2.4.9 版本,硬件平台为树莓派4B(兼容3B+) 版本,用 python3 的可能兼容性有问题。但是教程也会对“如何在PC上利用Python3 使用OpenCV3”进行讲解。 本教程从简单的图像处理起步,逐渐增加计算机视觉的难度,在其中穿插一些对硬件的控制,保证课题的趣味性和多样性。在编写本教程的过程中,笔者发现课程中很多项目有很强的可拓展性,这些拓展将以课后联系的形式呈现,希望有能力的同学进行尝试。

 

本教程的每个章节有一定的连续性,笔者希望基础较弱的同学从本章开始逐步向后学习,不要好高骛远。本小节将指导同学们:在配置好树莓派的镜像系统后, 如何下载合适的编译器以及如何源码下载OpenCV。


本教程的源码被存放在树莓派的/home/pi/yahboom和/home/pi/Adafruit_Python_PCA9685 两个文件夹内。


1.1.1 OpenCV 简介    


树莓派图像处理部分使用的开源计算机视觉环境 OpenCV。OpenCV 是 Open Source Computer Vision Library 的缩写,是一个基于开源发行的跨平台计算机视觉库,它实现了图像处理和计算机视觉方面的很多通用算法,已经成为计算机视觉领域最有力的研 究 工 具 之 一 。OpenCV的 底层由C和C++编 写 ,轻量且高 效 ,可以运行在多个操作系统上( L i n u x 、 Windows、Mac、Andorid、iOS 等),同时提供了多种编程语言的API 接口,本教程是基于Python的接口进行一些简单的计算机视觉处理。


OpenCV 的应用领域:机器人视觉、模式识别、机器学习、工厂自动化生产线产品检测、 医学影像、摄像机标定、遥感图像等。


OpenCV 可以解决的问题: 人机交互、机器人视觉、运动跟踪、图像分类、人脸识别、 物体识别、特征检测、视频分析、深度图像等

 

但是我们也必须面对一个硬件材料上的事实,即,树莓派的自身性能运行高计算量的OpenCV项目是非常困难的,我们不得不考虑和优化延迟卡顿等问题。


OpenCV 的实时性能也非常出色,可实时应用,为实时场景的视觉环境开发提供了很好 的解决方案,总之 OpenCV 是计算机视觉开发方面优秀的开源工具,如果对计算机视觉开发 感兴趣可以多了解这方面的知识:


OpenCV 官方主页:https://www.opencv.org

OpenCV 中文论坛:http://www.opencv.org.cn

OpenCV CSDN 论坛:https://bbs.csdn.net/forums/OpenCV


OpenCV CSDN 论坛:https://bbs.csdn.net/forums/OpenCV


1.2 在树莓派上源码安装OpenCV


1.2.1 树莓派开发环境的搭建


按照配套的安装步骤组装硬件,此时的机器应该是这样的:


image.png 

1-1初期不需要接如拓展板


即,先插入配置树莓派系统和摄像头将会用到的键盘鼠标,HDMI接入显示器,电源和USB摄像头。请注意此时我们并不使用BST-AI拓展板和两个舵机,在之后的章节中我们会讲述如何使用BST-AI拓展板驱动舵机。

 

树莓派鼓励用户使用python和C++作为其开发语言,所以原则上可以不用安装python的编译器,但是树莓派自带的python(IDLE)和Thonny python IDE都过于简陋,不太适合python使用者进行复杂的OpenCV开发。在这里推荐Spyder作为树莓派的python IDE。这种编译器相对上述两种编译器略显笨重,但是对内核和运算值的控制更加灵活。

 

树莓派安装Spyder非常的方便,在命令行输入:


sudo apt-get install spyder


下载时间可能比较长,因为在安装spyder3的同时很多python开发开发必要的依赖也一并被安装到树莓派里了,这也说明牺牲一定的空间下载spyder3是值得的。此时,我们已经可以在树莓派的开始菜单-programming中看到编译器了。注意:


1、 在下载spyder之前请不要输入 “sudo apt-get update/upgrade”, 否则会下载适用于python3.6的spyder,无法正常使用,比如图1.2中的spyder的python版本就是3.6,说明下载出现错误。


2、 如果看不到编译器说明安装过程出错,尝试重新执行:sudo apt-get update和 sudo apt-get install spyder3两条命令。


image.png 

1-2下载完成后,在start”中已经能看到Spyder编译器了

 

image.png 

1-3 Spyder3Python3.6版本

我们可以在preference/syntax coloring scheme中更换自己喜欢的主题,怎么样?是不是已经觉得树莓派和普通PC一样方便了呢?现在我们已经可以用在树莓派上舒适的开发python了。

 

1.2.2 树莓派设置静态IP地址

 

几乎所有的树莓派入门教程中都会讲述如何设置树莓派的静态IP, 但是这里我们把它单独放在这里是有原因的,首先,随着raspbian树莓派系统的版本迭代。旧的,修改/ect/network/interface的方式对于某些2018/2019版本可能已经不能使用了,第二点,在后续章节中,我们将涉及树莓派网络通信的项目,这里进行提前修改以便于简化后期操作。

 

首先,为了符合大多数人的使用环境,我们同时修改eth0和wlan0,也就是有线网络连接和Wi-Fi。首先终端输入:


ifconfig


查看树莓派默认分配的动态IP地址。

 image.png

1-4 配置静态IP地址

 

如图所示,作者的eth0 地址为192.168.1.108,wlan0地址为192.168.1.197。请注意:有些小伙伴的地址可能为192.168.0.xxx 、192.168.2.xxx甚至不以192.168开头,这都没有没有关系,请事先对你的地址做记录。

 

第二步,终端输入


sudo nano /etc/dhcpcd.conf


当然你也可以使用其他你更喜欢的文本编译器,比如vim或vi。进入文件后,在文件的最底部写入:

interface eth0

 

static ip_address=192.168.1.55/24    

static routers=192.168.1.1

static domain_name_servers=192.168.1.1

 

interface wlan0

 

static ip_address=192.168.1.66/24

static routers=192.168.1.1

static domain_name_servers=192.168.1.1


eth0和wlan0的没有冲突,可以两个都进行设置。注意,修改前我的地址为192.168.1.xxx,所以静态地址的第三位我也同样设置成“1”。这点一定要根据自身情况完成设置。


image.png 

1-5 修改/ectdhcpcd.conf文件

 

不要在意我的选项为什么是中文的,你也可以在亚博智能官网上找到配置中文字符环境的配置教程,自己配置树莓派的中文字符环境。检查无误后,按ctrl+x,“y”,“enter”保存并退出文件。重启树莓派。

重启后,输入ifconfig我们就可以查看是否成功设置ip地址了。我们可以ping一下百度(www.baidu.com)以查看是否能够正常上网。


image.png 

1-6 能够正常上网了

1.2.3 安装python-opencv

         

更新树莓派系统 

 

sudo apt-get update

sudo apt-get upgrade


安装 python-OpenCV

 

sudo apt-get install libopencv-dev

sudo apt-get install python-opencv


注意:该种安装方式不知道安装那个版本的OpenCV,但是我们的原则是使用2.4.9版本,正好符合OpenCV的默认下载版本。


测试 OpenCV

测试方法1:

终端命令行打印 OpenCV 的版本号

image.png

1-7检测是否成功安装OpenCV

 

测试方法2:

在‘/home/pi/yahboom/face_detect_orgin’中,运行luxun.py,这是一个对于图片中人脸和人眼的检测程序。完整代码如下:


image.png

 

运行方法是点击控制栏中的红色箭头。注意,下图1.3中的代码为OpenCV3,和树莓派上的版本不同。这里简单说一下,OpenCV3对与OpenCV2而言,在很多细节上做了调整。所以,在学习本项目的过程中,一定要紧记,树莓派上的版本为OpenCV2电脑上的版本为OpenCV3。同学们在自学过程中,可能会遇到:在PC上可以运行的程序,却在树莓派上报错。遇到这种情况,请优先检查自己代码的版本。

 

image.png 

1-8 spyder简单操作

 

本教程资料会增加一个使用 OpenCV 获取USB摄像头实时视频流的程序该种 OpenCV 的安装方式,比较简单和快速,适合刚上手树莓派OpenCV的读者。