2回答

2收藏

[大赛作品提交] 【进阶五】基于OpenCV的人脸识别在树莓派3B上的实现

Raspberry Pi Raspberry Pi 11285 人阅读 | 2 人回复 | 2017-12-21

本帖最后由 ky123 于 2018-1-31 14:15 编辑

感谢e络盟提供的助赛基金。本次实验将介绍在树莓派如何实现人脸识别,输入为摄像头采集图像,输出为图像中包含的人脸最佳匹配结果以及结果的置信度

树莓派系统:Ubuntu Mate 16.04
OpenCV版本:3.3.0
————————————————————分割线—————————————————————

-1-
安装OpenCV
由于人脸识别要用到contrib库,而opencv3之后的版本没有contrib模块,所以在安装opencv的时候要将contrib库一块编译进去。
1) opencv安装之cmake
opencv具体安装教程,百度一大把,这里就不重复了,这里主要cmake的时候要将扩展模块包包含进去就行了。
  1. cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=<path to opencv_contrib/modules/> ..
复制代码
  • CMAKE_INSTALL_PREFIX是编译完成opencv的安装路径,如果系统已经安装其它版本的opencv,注意改下路径;
  • OPENCV_EXTRA_MODULES_PATH 就是用来指定要编译的扩展模块,后边加上刚下载的opencv_contrib模块的路径即可。

cmake的时候看下终端打印信息,确保opencv_contrib将要被编译


2)  opencv安装之make
cmake完成后,即可执行make。
注意,如果出现 ffmpeg  error:,只需要在cmake时,去掉该编译项即可
  1. cmake  ........  -D  WITH_FFMPEG=OFF
复制代码
之后就是漫长的等待,在树莓派3B上编译共花费四小时左右的时间......

-2-
人脸识别

1) 建立人脸数据集
为了训练我们进行人脸识别我们需要一些真人的人脸数据集,opencv给的数据集是:The AT&T Facedatabase
下载地址:http://www.cl.cam.ac.uk/research/dtg/attarchive/facedatabase.html
当然我们也要建立自己的数据集,因为我们需要识别自己的脸。
采集自己的人脸数据时,需要用到opencv的分类器的类CascadeClassifier,并使用detectMultiScale()函数进行人脸检测,将采集到的人脸图像大小保存为112*92。
本次使用的人脸采集程序:
take_photos.txt (1.22 KB, 下载次数: 74)


2) 训练数据集
当我们写人脸模型的训练程序的时候,我们需要读取人脸和人脸对应的标签。这里通过一个python脚本文件生成csv文件,它包含两方面内容,一是每一张图片的位置所在,二是每一个人脸对应的标签,就是为每一个人编号。
opencv2训练使用的方法是
  1. Ptr<FaceRecognizer> model = createEigenFaceRecognizer();
  2.     model->train(images, labels);
复制代码
opencv3.3中做了改动
  1. Ptr<EigenFaceRecognizer> model0 = EigenFaceRecognizer::create();
  2.     model0->train(images, labels);
复制代码
训练完成后将训练模型保存到一个"eigenfaces_at.yml"中,人脸识别的时候要调用它。
add_label.txt (1.18 KB, 下载次数: 40)

train.txt (2.06 KB, 下载次数: 41)


3) 人脸识别
完成了前面两步,接下来可进行人脸识别,程序流程如下:
  • 打开摄像头;
  • 加载人脸检测器,加载人脸模型;
  • 人脸检测;
  • 把检测到的人脸与人脸模型里面的对比,找出最匹配的人脸结果并得到该结果的置信度值;
  • 如果人脸是自己的,显示自己的名字。
其中需要注意,opecv3.3中使用新的函数加载人脸模型
  1. Ptr<EigenFaceRecognizer> modelPCA = Algorithm::load<EigenFaceRecognizer>("./eigenfaces_at.yml");
复制代码
本次实验使用人脸识别代码:
rec_face.txt (2.62 KB, 下载次数: 56)


VNC登录树莓派,运行rec_face,得到识别结果如下:



<本次更新完>

关注下面的标签,发现更多相似文章
分享到:
回复

使用道具 举报

回答|共 2 个

倒序浏览

沙发

lans

发表于 2018-6-13 21:22:30 | 只看该作者

楼主,请问EigenFaceRecognizer这里一直未定义引用怎么回事
板凳

feixiang20

发表于 2018-8-12 13:56:07 | 只看该作者

真是高手啊
您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条