爱板网论坛

查看: 458|回复: 0

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

[复制链接]

6

主题

1

好友

200

积分

秀才

Rank: 3Rank: 3

  • TA的每日心情
    开心
    前天 09:43
  • 签到天数: 22 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    发表于 2017-12-21 01:41:37 |显示全部楼层
    本帖最后由 ky123 于 2018-1-15 13:34 编辑

    感谢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将要被编译
    2017-12-21 00:42:29屏幕截图.png


    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, 下载次数: 9)

    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, 下载次数: 6)
    train.txt (2.06 KB, 下载次数: 8)

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

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



    <本次更新完>

    回复

    使用道具 举报

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

    关闭

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

    手机版|爱板网 |网站地图  

    GMT+8, 2018-1-21 20:57 , Processed in 0.228599 second(s), 12 queries , Memcache On.

    苏公网安备 32059002001056号

    Powered by Discuz!

    回顶部