Python+Tensorflow+Opencv人脸识别(任意数量人脸)

简单的人脸识别

一直想做机器学习的东东,最近由于工作的调整,终于有开始接触的机会了,哈哈。本文主要代码是来源于“就是这个七昂”的博文,传送门在此:https://blog.csdn.net/qq_42633819/article/details/81191308。”就是这个七昂”大大在他的博文中已经将人脸识别的过程讲的很清楚了。说来忏愧,在算法上我没有改变(我自己还没搞清楚,打算好好看看keras),因为在大大博文评论区看到好多人问怎么实现多个用户的人脸识别。刚开始我也在纳闷,怎么做呢?于是我就大胆尝试了一把,

准备工作

在做人脸识别前,你的有一个可以做的环境吧,在这里我当一次搬运工。开发环境的配置可以在网上找一堆,这里简单介绍一下我自己的。

  1. 安装Anaconda
    官网下载地址 https://www.anaconda.com/download/
    选择相应的Anaconda进行安装(可能会很慢)
    网盘分享链接:https://pan.baidu.com/s/1gtvSnoo7f0-Iu8SvZtospw
    密码:3pzr
    我电脑是win10 64位系统,我选择安装的是Anaconda3-2019.03-Windows-x86_64.exe这个版本。下载好了安装包,就像安装普通软件一样,安装就行。
    在这里插入图片描述
    一路点下去,在Advanced Option界面时,如果你电脑里面没有其他版本Python就两个都选了。
    在这里插入图片描述
    那就等着吧,时间有点儿长,安装完了可以测试一下
    打开cmd,输入conda --version

  2. 安装Pycharm
    首先去Pycharm官网,或者直接输入网址:http://www.jetbrains.com/pycharm/download/#section=windows,下载PyCharm安装包,根据自己电脑的操作系统进行选择,对于windows系统选择下图的框框所包含的安装包。这个也可以从网上找很多,而且安装很成功,个人学习的话,建议安装免费版本。

  3. pycharm环境配置
    打开Pycharm,随便先创建一个工程或者.py文件
    在这里插入图片描述点击File→Setting,打开界面在这个选择你刚才安装的anconda,具体可以找找教程(我承认,我懒了)
    在这里插入图片描述同时你可以在箭头2的位置添加我们这个项目的第三方库。
    你需要到的库有:(我python3.7.1,以下是我安装的版本)
    1.tensorflow 1.13.1
    2.keras 2.2.4
    3.scikit-learn 0.20.3
    4.numpy(这个随便)
    5.opecv-python 4.1.0.25
    OK,差不多就这些。

开始——先获取必要的人脸图像

人脸识别其实就是分类和聚类的过程。
人脸图像获取的代码,我分为了三个脚本,代码如下:
首先是一个newuser_information_collection.py,这个脚本将调用其他脚本

###################################################
#相当于公司人力组织一次所有员工人脸信息采集
###################################################
from gain_face import CatchPICFromVideo

while True:
    print("是否录入员工信息(Yes or No)?")
    if input() == 'Yes':
        #员工姓名(要输入英文,汉字容易报错)
        new_user_name = input("请输入您的姓名:")

        print("请看摄像头!")

        #采集员工图像的数量自己设定,越多识别准确度越高,但训练速度贼慢
        window_name = '信息采集'                                                                                  #图像窗口
        camera_id = 0                                                                                            #相机的ID号
        images_num = 200                                                                                         #采集图片数量
        path = 'C:\\Users\\Administrator\\Documents\\Python Project\\Face recognition\\data\\' + new_user_name   #图像保存位置

        CatchPICFromVideo(window_name,camera_id,images_num,path)
    else:
        break

这个脚本可以让你不断写入图像数据,自定义每组数据大小,自动以你输入命名文件夹,这样就有了多个人脸的分类。
下面是gain_face.py的代码

################
#获取人的脸部信息,并保存到所属文件夹
################


import cv2
import sys
from createfolder import CreateFolder


from PIL import Image


def CatchPICFromVideo(window_name,camera_idx,catch_pic_num,path_name):

    #检查输入路径是否存在——不存在就创建
    CreateFolder(path_name)

    cv2.namedWindow(window_name)

    # 视频来源,可以来自一段已存好的视频,也可以直接来自USB摄像头
    cap = cv2.VideoCapture(camera_idx)

    # 告诉OpenCV使用人脸识别分类器
    classfier = cv2.CascadeClassifier("C:\Program Files (x86)\Python\Python37\Lib\site-packages\cv2\data\haarcascade_frontalface_alt2.xml")

    #识别出人脸后要画的边框的颜色,RGB格式
    color = (0, 255, 0)

    num = 0
    while cap.isOpened():
        ok, frame = cap.read()  # 读取一帧数据
        if not ok:
            break

        grey = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)  # 将当前桢图像转换成灰度图像

        # 人脸检测,1.2和2分别为图片缩放比例和需要检测的有效点数
        faceRects = classfier.detectMultiScale(grey, scaleFactor=1.2, minNeighbors=2, minSize=(32, 32))
        if len(faceRects) > 0:  # 大于0则检测到人脸
            for faceRect in faceRects:  # 单独框出每一张人脸
                x, y, w, h = faceRect
评论 130
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值