查看: 5001|回复: 2
收起左侧

pcduino+opencv实现人脸追踪摄像头

2013-12-12 10:06:05 | 显示全部楼层 |阅读模式
[color=#000][font=Arial][size=3]Pcduino是一款兼容Arduino接口的mini pc,A8架构1Ghz的CPU,计算能力不俗,用来跑OpenCV刚刚好。这里就用他们实现一个可以跟随人脸移动的摄像头。[/size][/font][/color][color=#000][font=Arial][size=3]硬件清单:[/size][/font][/color]
[color=#000][font=Arial][size=3]1、Pcduino一块[/size][/font][/color]
[color=#000][font=Arial][size=3]2、传感器扩展板一块[/size][/font][/color]
[color=#000][font=Arial][size=3]3、摄像头云台一个[/size][/font][/color]
[color=#000][font=Arial][size=3]4、摄像头一个[/size][/font][/color]
[color=#000][font=Arial][size=3]软件环境:[/size][/font][/color]
[color=#000][font=Arial][size=3]1、Pcduino板载Ubuntu[/size][/font][/color]
[color=#000][font=Arial][size=3]2、GCC 4.6[/size][/font][/color]
[color=#000][font=Arial][size=3]3、QT 4.8.5:http://qt-project.org/downloads[/size][/font][/color]
[color=#000][font=Arial][size=3]4、OpenCV 2.4.7:http://opencv.org/downloads.html[/size][/font][/color]
[color=#000][font=Arial][size=3]5、Arduino SDK(c_enviroment):https://github.com/pcduino/c_enviroment[/size][/font][/color]

[color=#000][font=Arial][size=3]在开始动手前,我们先来捋一下思路。[/size][/font][/color]
[color=#000][font=Arial][size=3]通过OpenCV可以方便的实现Face Detect,OpenCV的sample目录就有这个例子。流程大致是从摄像头得到逐帧的图像,通过事先训练好的特征检测出人脸的坐标(即图像的像素坐标),最后在该帧图像上圈出人脸的位置。[/size][/font][/color]
[color=#000][font=Arial][size=3]我们需要的就是这个人脸的坐标,先计算出人脸坐标x轴和y轴分别偏离画面中心点的距离(单位:像素),然后根据这个偏离值驱动摄像头的云台去修正摄像头的指向,使人脸坐标与画面中心点重合(即指向人脸)。[/size][/font][/color]

[color=#000][font=Arial][size=3]思路清晰了,我们现在开工:)[/size][/font][/color]

[color=#000][font=Arial][size=3]硬件部分[/size][/font][/color]
[color=#000][font=Arial][size=3]硬件部分安装比较简单,先在Pcduino上接驳传感器扩展板,再把云台两个舵机分别接在传感器扩展板PWM 5、6针脚上(PWM与GPIO共用5、6针脚,选用5、6是因为只有5、6是硬件PWM,不会使CPU占用率太高)。[/size][/font][/color]
[color=#000][font=Arial][size=3]这里需要注意的一点是,如果你选用的是大功率的云台和舵机,需要为舵机独立供电。[/size][/font][/color]
[color=#000][font=Arial][size=3]这是安装好的样子[/size][/font][/color]
[align=center][color=rgb(0, 0, 0)][font=Arial][size=3]http://v1.freep.cn/3tb_131211163624u1cm512293.png[/size][/font][/color][/align]
[color=#000][font=Arial][size=3]软件部分[/size][/font][/color]
[color=#000][font=Arial][size=3]编译安装OpenCV:[/size][/font][/color]
[color=#000][font=Arial][size=3]1、先安装各种依赖库,根据你的环境不同,可能出现缺失,全都补上,以求OpenCV一次编译通过(因为编译过程耗时将近3小时。。。)[/size][/font][/color]
[color=#000][font=Arial][size=3]sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg62-dev libtiff4-dev cmake libswscale-dev libjasper-dev[/size][/font][/color]
[color=#000][font=Arial][size=3]2、下载解压OpenCV包,用cmake工具生成编译所需的信息,第四句说明编译成release版本,安装目录是/usr/local[/size][/font][/color]
[color=#000][font=Arial][size=3]cd ~/opencv                                                                                                                                                                                                                            [/size][/font][/color]
[color=#000][font=Arial][size=3]mkdir release[/size][/font][/color]
[color=#000][font=Arial][size=3]cd release[/size][/font][/color]
[color=#000][font=Arial][size=3]cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..[/size][/font][/color]
[color=#000][font=Arial][size=3]3、开始编译[/size][/font][/color]
[color=#000][font=Arial][size=3]make[/size][/font][/color]
[color=#000][font=Arial][size=3]make install[/size][/font][/color]
[color=#000][font=Arial][size=3]关于OpenCV的安装大家可以参照官方文档:[/size][/font][/color]
[color=#000][font=Arial][size=3]http://docs.opencv.org/doc/tutorials/introduction/linux_install/linux_install.html#linux-installation[/size][/font][/color]
[color=#000][font=Arial][size=3]呼呼。。。3小时过去了,OpenCV已经编译完成,运行个sample测试一下,通过以后我们接着安装c_enviroment。[/size][/font][/color]

[color=#000][font=Arial][size=3]编译安装c_enviroment[/size][/font][/color]
[color=#000][font=Arial][size=3]1、c_enviroment是Pcduino控制硬件I/O的库,从开头软件环境处给的链接下载c_enviroment的zip包,解压编译[/size][/font][/color]
[color=#000][font=Arial][size=3]cd c_enviroment[/size][/font][/color]
[color=#000][font=Arial][size=3]make[/size][/font][/color]
[color=#000][font=Arial][size=3]编译完后,我们可以进入output/test目录,测试一下点亮led的sample[/size][/font][/color]

[color=#000][font=Arial][size=3]编译安装Qt[/size][/font][/color]
[color=#000][font=Arial][size=3]为了方便开发,我这里用了Qt creator作为IDE[/size][/font][/color]
[color=#000][font=Arial][size=3]1、安装Qt creator[/size][/font][/color]
[color=#000][font=Arial][size=3]sudo apt-get install qtcreator[/size][/font][/color]
[color=#000][font=Arial][size=3]现在已经可以在programing里运行Qt creator了,但是这时候它还不能用,还需要安装Qt library[/size][/font][/color]
[color=#000][font=Arial][size=3]2、安装Qt library[/size][/font][/color]
[color=#000][font=Arial][size=3]通过开头软件环境中的链接下载嵌入式版Qt library:Qt libraries 4.8.5 for embedded Linux[/size][/font][/color]
[color=#000][font=Arial][size=3]具体安装过程大家可以参照这个帖子,这里就不赘述了:[/size][/font][/color]
[color=#000][font=Arial][size=3]http://www.oschina.net/question/1174645_121352
[/size][/font][/color]

[color=#000][font=Arial][size=3]经过漫长的编译安装(亲测需要20小时以上),Qt终于搞定了,至此环境算是搭好一大半了~[/size][/font][/color]

[color=#000][font=Arial][size=3]新建一个名为face_tracking_camera的C++项目,编辑face_tracking_camera.pro文件,加入OpenCV和c_enviroment的源文件、头文件和类库路径,我这里OpenCV安装在/usr/local/,c_enviroment安装在/home/ubuntu/c_enviroment/ [/size][/font][/color]

[b]详情和源码下载:http://blog.jokerjewel.com/articles/2013/12/11/1386750485299.html[/b]
回复

使用道具 举报

2013-12-13 09:27:23 | 显示全部楼层
好文章,楼主辛苦。
回复 支持 反对

使用道具 举报

2015-4-22 13:50:46 | 显示全部楼层
谢谢分享,学习中。。。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

热点推荐

关注我们,了解更多

官方微信

服务时间:10:00-16:00

13714503811

公司地址:深圳市龙岗区南湾街道东门头路8号

Copyright © 2012-2020 Powered by 树莓派论坛 2019.4  粤ICP备15075382号-1
快速回复 返回列表 返回顶部