资源简介

python人脸识别(opencv)

资源截图

代码片段和文件信息

#coding=utf-8
import os
import cv2

import numpy

def mkdir(filename):
    ‘‘‘
    创建文件夹
    :param filename: 文件夹目录
    :return: 空
    ‘‘‘
    ‘‘‘
    判断是否存在该文件夹
    ‘‘‘
    if not os.path.exists(filename):
        ‘‘‘
        创建文件夹
        ‘‘‘
        os.mkdir(filename)

def readFace():
    ‘‘‘
    裁剪人脸照片
    :return:
    ‘‘‘
    fileFacebase = “face“
    ‘‘‘
    创建人脸根目录
    ‘‘‘
    mkdir(fileFacebase)
    ‘‘‘
    获取数据目录子级列表
    ‘‘‘
    dirs = os.listdir(“d_img“)
    ‘‘‘
    循环获取目录信息
    ‘‘‘
    for j dir in enumerate(dirs):
        ‘‘‘
        拼接人脸子集目录路径
        ‘‘‘
        fileInfo = fileFacebase + “/%s“ % str(dir)
        ‘‘‘
        创建人脸自己目录
        ‘‘‘
        mkdir(fileInfo)
        ‘‘‘
        获取采集数据子集的子集文件
        ‘‘‘
        ds = os.listdir(“d_img/%s“ % dir)
        ‘‘‘
        定义变量方便人脸文件命名
        ‘‘‘
        num = 0
        ‘‘‘
        遍历采集数据子集的子集文件
        ‘‘‘
        for d in ds:
            ‘‘‘
            拼接文件路径
            ‘‘‘
            path = “d_img/%s/%s“ % (dir d)
            ‘‘‘
            读取文件
            ‘‘‘
            image = cv2.imread(path)
            try:
                ‘‘‘
                更改图片为灰度图片加快辨认速度(可选但是要统一)
                ‘‘‘
                image = cv2.cvtColor(src=image code=cv2.COLOR_BGR2GRAY)
            except Exception as e:
                pass

            ‘‘‘
            加载脸部数据对比
            ‘‘‘
            face_detecotr = cv2.CascadeClassifier(“haarcascade_frontalface_alt.xml“)
            ‘‘‘
            对比数据
            ‘‘‘
            face_dete = face_detecotr.detectMultiScale(image minNeighbors=4)
            ‘‘‘
            判断是否可以采集到人脸数据
            ‘‘‘
            if isinstance(face_dete tuple):
                print(“没有检查到头像111“)
                pass
            else:
                ‘‘‘
                采集到数据名称加1
                ‘‘‘
                num += 1
                ‘‘‘
                遍历数据获取起点xy轴信息人脸宽度w高度h
                ‘‘‘
                for x y w h in face_dete:
                    ‘‘‘
                    绘画矩形框便于展示
                    1窗口展示的图片
                    2起点xy坐标
                    3终点xy坐标
                    4矩形框颜色
                    5边框宽度
                    ‘‘‘
                    cv2.rectangle(img=image pt1=(x y) pt2=(x + w y + h) color=[0 0 255] thickness=1)
                    ‘‘‘
                    裁剪获取人脸部分数据
                    ‘‘‘
                    imgFace = image[y:y + h x:x + w]
                    ‘‘‘
                    设置图片大小
                    ‘‘‘
                    imgFace = cv2.resize(imgFace dsize=(200 200))
                    ‘‘‘
                    保存人脸图片
                    ‘‘‘
                    cv2.imwrite(“face/%s/%d_face.jpg“ % (dir num) imgFace)
‘‘‘
获取人脸数据
‘‘‘
def getFace():
    ‘‘‘
    获取人脸文件夹下所有子文件夹
    ‘‘‘
    dirs = os.listdir(“face“)
    ‘‘‘
    因为需要让算法学习所以将数据遍历之数组中方便算法学习
    ‘‘‘
    # 用于存放人脸数据
    X = []
    # 用于存放对应数据的标签猜想应该可以直接使用文件夹名称
    Y = []
    ‘‘‘
    遍历人脸图片文件存储路径将输入存储到数据集合
    ‘‘‘

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        8553  2019-10-24 20:33  python人脸识别\05_opencv人脸识别.py
     文件      341406  2019-10-23 09:36  python人脸识别\haarcascade_eye.xml
     文件      676709  2019-10-23 09:36  python人脸识别\haarcascade_frontalface_alt.xml
     文件         242  2020-03-13 00:18  python人脸识别\requirements.txt
     目录           0  2020-03-13 00:20  python人脸识别\

评论

共有 条评论