人脸辨识,用树莓派Raspberry Pi实现舵机云台追踪脸孔
影像辨识作为近年最热门的专业技术之一,广泛用于智慧监视器、车电监控、智慧工厂、生物医疗电子等等;其中,人脸辨识是一个很重要的部分,网络上已经有相当多的资源可供下载使用;于是我们使用舵机云台作为镜头旋转的硬件,搭配镜头模块,并结合RaspberryPi 作为微控制器,完成一台自制的人脸辨识追踪系统,来看看如何操作吧!
背景技术
Haar cascades
这是「Haar Feature-based Cascade Classifier」的简写,「Haar-likefeature」为一种判断某特定物体的矩阵,将待测图片经由该矩阵运算后,产生该图片的特征值矩阵。
「Cascade Classifier」是级联分类器,将数个分类器Classifier依某种关系排列,如果该图片的特征值矩阵通过阶层式分类器的检验,即可判断该待测图片为某特定物体。总而言之,将照片经由Haar转换后的特征矩阵,如果通过辨识度由低到高排列的级联分类器的筛选,即可认定为人像。
硬件组装
舵机云台由两个伺服马达及一个组合式云台构成,能够同时进行左右及前后运动,使用材料如下:
1.组合式舵云机台
2.SG90伺服马达x2
舵机云台组合完成的样子:

接将相机镜头模块固定在舵机云台的卡榫处,硬件就组装完成了。

连接Raspberry Pi
舵机云台的上下转动马达(Pan)与左右转动马达(Tilt),需要使用Raspberry Pi的PWM脚位(pin7、11),但RaspberryPi的5V脚位最多只能接16mA,因此需要另外使用RaspberryPi的USB Port,并联提供电流,才能推动伺服马达。
除此之外,需要在RaspberryPi上安装PIR与LED模块,PIR用于侦测外界的动静,当有人时才开启舵机云台进行搜寻;LED则作为指示器,当舵机云台发现脸孔并锁定时,发出亮光作为提示;并在相机扁平电缆插入Raspberry Pi的相机连结埠(CSI)。

CSI位于HDMI与Audio之间

软件安装
于Raspberry Pi安装OpenCV
安装步骤可参考以下链接,
http://yehnan.blogspot.com/2015/12/raspberry-piraspbianopencv.html
OpenCV里面的/haarcascades目录,已包括数个已经训练好的Haarcascades分类器,包括正面人脸、眼睛、载着眼镜、嘴巴、鼻子、微笑、上半身、全身、由上往下的身体、甚至于还有猫脸……等xml文件名,不须另外下载或自己训练,可直接使用。

操作流程
1. 当PIR(红外线感应模块)侦测到有物体时会启动舵机,由上往下递增30度,左右180度来回的转动,侦测是否有脸孔出现;若有则持续追踪脸孔,无则持续搜寻。
2. 若一轮搜寻结束后,PIR感测不到物体时,则停止舵机的运作,并等待有下一个物体被PIR侦测到时,再次启动。

程序代码
原始程序代码可以从Github下载,
https://github.com/ch-tseng/PanTilt
您只将舵机云台的两个servo分别接到pin 7与pin 11,PIR接到pin 36,LED接到pin 32,执行储存在RaspberryPi的main.py即可运作。当然您也可以使用其它脚位,只要记得修改程序中相对应的参数值即可。

原文参考
https://mp.weixin.qq.com/s?__biz=MzU0MTg0ODIzNA==&mid=2247484114&idx=1&sn=d86878c72fa78008e60d3719d2cd3e93&chksm=fb22e517cc556c01f46253d1e21dfbbdfd0470317d64ef99043b7c806fea40a54730000839c1#rd

人脸辨识,用树莓派Raspberry Pi实现舵机云台追踪脸孔的更多相关文章
- 树莓派(Raspberry Pi)搭建简单的lamp服务
树莓派(Raspberry Pi)搭建简单的lamp服务: 1. LAMP 的安装 sudo apt-get install apache2 mysql-server mysql-client php ...
- 树莓派(raspberry pi)学习4: 更改键盘布局(转)
树莓派(raspberry pi)用了几次后,发现键盘老是按错,一些字符打不出来或打错 这个问题,折腾我半天.还是把心得分享一下吧 上网查,发现是键盘布局不对,树莓派(raspberry pi)是英国 ...
- 外网登录访问树莓派 Raspberry Pi
外网登录访问树莓派 Raspberry Pi 本地的树莓派 Raspberry Pi,只能在局域网内访问,怎样从公网也能登录访问树莓派 Raspberry Pi? 本文将介绍具体的实现步骤. 1. 准 ...
- 树莓派(Raspberry Pi)使用Shell编写的极简Service
树莓派(Raspberry Pi)运行的系统是基于Debian的,不仅可以运行Shell,还支持systemd和docker,可以编写一个简单的服务,让其在启动时运行,执行一些自动化的操作.这里在Ra ...
- 树莓派raspberry pi配置
(1)国际化语言 树莓派初装系统之后,首次启动会出现“raspi-config”工具,如下图:(若不是初次启动,在命令模式下,请输入 sudo raspi-config 命令,即可调出此界面.若在图形 ...
- 树莓派(raspberry pi)学习11: 将树莓派变成一个Web服务器(转)
将树莓派变成一个Web服务器,通过访问网页,就可以控制树莓派,比如:查看摄像头\开灯等等. 一想到Linux Web服务器,我们首先想到的是,Apache + MySql + Php. 树莓派可以安装 ...
- 做一个树莓派Raspberry Pi拍立得
用树莓派Raspberry Pi打造一台拍立得,作法如下: 材料:树莓派+数字相机模块+热敏打印机 因为打印机所需电流较高,所以电源供应器的规格需要5V 3A以上. 再找一个稳定的电源以及够大的外壳装 ...
- VLOG丨树莓派Raspberry Pi 3安装PLEX并挂载USB硬盘打造最牛的微型家庭影音服务器2018
视频介绍 树莓派3安装目前最流行的PLEX服务器,实现既能最大限度降低功耗,也能随时随地观看分享影片. 一.在树莓派下安装PLEX媒体服务器 1.在终端,将你的树莓派更新至最新 sudo apt up ...
- 树莓派(raspberry pi)系统开发
[树莓派(raspberry pi)] 01.在linux环境下给树莓派安装系统及入门各种资料 [树莓派(raspberry pi)] 02.PI3安装openCV开发环境做图像识别(详细版) 出处: ...
随机推荐
- android之View组件的XML属性集合
XML属性 相关方法 说明 android:alpha setAlpha(float) 设置该组件的透明度 android:background setBackgroundResource(int) ...
- 错误:maximum number of expressions in a list is 1000
某一日发现这么如下这么一个错误 --> maximum number of expressions in a list is 1000 原因:因为SQL语句中用到了IN字句,而IN中的元素个数 ...
- centos 腾讯云 今天买了 18个月
1.安装开发编译工具包 yum groupinstall "Development Tools" 2.查看Linux 下用户 对系统资源的占用情况,root表示用户 top -u ...
- 菜鸟程序猿之IDEA快捷键
Ctrl+Shift + Enter,语句完成“!”,否定完成,输入表达式时按 “!”键Ctrl+E,最近的文件Ctrl+Shift+E,最近更改的文件Shift+Click,可以关闭文件Ctrl+[ ...
- generate failed: Cannot resolve classpath entry: mysql-connector-java-5.1.38.jar
详细错误及处理方法如下: [ERROR] Failed to execute goal org.mybatis.generator:mybatis-generator-maven-plugin:1.3 ...
- Python 基础 模块
python 中模块和保定 概念 如果将代码分才投入多个py 文件,好处: 同一个变量名也互不影响. python 模块导入 要使用一个模块,我们必须先导入该模块.python 使用import ...
- MySQL->AUTO_INCREMENT[20180516]
MySQL表格中自增长主键AUTO_INCREMENT使用,实现序列的最简单的方式 创建一个AUTO_INCREMENT自增的表 mysql> create table seq_test( ...
- 为什么浏览器控制台返回不是undefined,而是一串数字
setTimeout( (function(){console.log("ok")} )(), 16) 在浏览器控制台输入这段代码的时候返回的不是"undefined&q ...
- hubilder 打包app ios高版本不支持问题
<script type="text/javascript"> document.addEventListener('plusready', function(){ v ...
- django中对数据库的增删改查
Django的配置文件时settings.py中的 TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplate ...