人脸识别

1、环境

Vs2013+opencv3.0+win10

 

  1. 步骤
  1. 收集数据、预处理
  2. 训练模型
  3. 人脸识别

 

 

  1. 收据收集

参考https://blog.csdn.net/xingchenbingbuyu/article/details/51386949

    1. 使用opencv中的数据集测试

    1. 做自己的数据集(每个同学做30-100张照片)
      • 拍照程序,打开电脑摄像头,按键保存当前帧图像在文件夹
      • 代码

while (1)

                  {

                           char key = waitKey(100);

                           cap >> frame;

                           imshow("frame", frame);

                           string filename = format("D:\\pic\\pic%d.jpg", i);

                           switch (key)

                           {

                           case'space':

                                    i++;

                                    imwrite(filename, frame);

                                    imshow("photo", frame);

                                    waitKey(500);

                                    destroyWindow("photo");

                                    break;

                           default:

                                    break;

                           }

                  }

    1. 预处理
      • 人脸检测(调用opencv自带的检测函数检测人脸人眼)
        1. 加载分类器
        2. 调用检测函数
        3. 把检测到的人脸用矩形标记

参考https://blog.csdn.net/xingchenbingbuyu/article/details/51105159

 

  1. 模型训练

参考https://blog.csdn.net/xingchenbingbuyu/article/details/51407336

    1. Csv文件(带标记文本文件)生成

方便找到文件位置

.py脚本进行批处理生成

import sys

import os.path

 

# This is a tiny script to help you creating a CSV file from a face

if __name__ == "__main__":

 

    #if len(sys.argv) != 2:

    #    print "usage: create_csv <base_path>"

    #    sys.exit(1)

    #BASE_PATH=sys.argv[1]

 

    BASE_PATH="C:/Users/bingbuyu/Downloads/att_faces"

    SEPARATOR=";"

    fh = open("../etc/at.txt",'w')

    label = 0

    for dirname, dirnames, filenames in os.walk(BASE_PATH):

        for subdirname in dirnames:

            subject_path = os.path.join(dirname, subdirname)

            for filename in os.listdir(subject_path):

                abs_path = "%s/%s" % (subject_path, filename)

                print "%s%s%d" % (abs_path, SEPARATOR, label)

                fh.write(abs_path)

                fh.write(SEPARATOR)

                fh.write(str(label))

                fh.write("\n")     

            label = label + 1

    fh.close()

    1. 训练模型
      • 使用Opencv中的Facerecognizer
      • 提取图片标签,csv文件中
      • 将每组图片用该函数进行训练,得到人脸特征数值。这里可以考虑使用深度学习神经网络来进行处理。

 

  1. 人脸识别

参考https://blog.csdn.net/xingchenbingbuyu/article/details/51472330

    1. 打开摄像头
    2. 加载人脸检测器、加载人脸模型
    3. 人脸检测
    4. 对比检测到的人脸、从模型中找到相似度最高的
    5. 显示名字

 

  1. Opencv中人脸识别算法原理https://blog.csdn.net/wanghz999/article/details/78817265

 

  1. 改进
    1. 训练模型过程中可以使用cnn、dnn等深度学习来进行建模
    2. 将该程序集成为.exe可执行文件
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值