opencv动态识别人脸

import cv2
import os
import numpy as np



def take_faces():
    while True:
        key = input('请输入文件夹的名字,姓名拼音的缩写,如果输入Q,程序退出!')
        if key == 'Q':
            break
        # 在faces_dynamic下面创建子文件夹
        os.makedirs('./faces_dymamic/%s' % (key), exist_ok=True)
        take_photo(key)

def load_data():
    listdir = os.listdir('./faces_dymamic')
    #列表生成式
    names = [d for d in listdir if not d.startswith('.')]
    faces  = []
    target = [i for i in range(len(names))]*10
    for dir in names:
        for i in range(1,11):
            gray = cv2.imread('./faces_dymamic/%s/%d.jpg'% (dir,i)) #三维图片
            gray_ = gray[:, :, 0] #二维数组
            faces.append(gray_)
    faces = np.asarray(faces)
    target = np.asarray(target)
    target.sort()  # 排序
    return faces,target,names


def dynamic_recognizer_face(face_recognizer,names):
    cap = cv2.VideoCapture(0)
    #人脸检测
    face_detector = cv2.CascadeClassifier('./haarcascade_frontalface_default.xml')
    while True:
        flag,frame = cap.read()
        if not flag:
            break
        gray = cv2.cvtColor(frame, code=cv2.COLOR_BGR2GRAY)
        faces = face_detector.detectMultiScale(gray,minNeighbors=5)
        for x,y,w,h in faces:
            face = gray[y:y + h, x:x + w]
            face = cv2.resize(face, dsize=(64, 64))
            y_,confidence = face_recognizer.predict(face)
            label = names[y_]
            print('这个人是:%s.置信度:%0.1f'%(label,confidence))

            cv2.rectangle(frame,pt1=(x,y),pt2=(x+w,y+h),color=[0,0,255],thickness=2)
            cv2.putText(frame,text=label,
                        org=(x,y-10),
                        fontFace=cv2.FONT_HERSHEY_SIMPLEX,
                        fontScale=1.5,
                        color=[0,0,255],thickness=2)
        cv2.imshow('face',frame)
        key = cv2.waitKey(1000//24)
        if key == ord('q'):
            break
    cv2.destroyAllWindows()
    cap.release()

if __name__ == '__main__':
   
    #2、加载数据,返回目标值
    faces,target,names  = load_data()
    #print(faces.shape,target.shape)
    #3、加载人脸识别算法
    #face_recognizer = cv2.face.EigenFaceRecognizer_create()
    #face_recognizer = cv2.face.FisherFaceRecognizer_create()
    face_recognizer = cv2.face.LBPHFaceRecognizer_create()
    #4、算法训练,找到目标值之间的规律
    face_recognizer.train(faces,target)
    #5、动态加载数据
    dynamic_recognizer_face(face_recognizer,names )

相关推荐

  1. opencv动态识别人脸

    2024-04-28 12:08:03       14 阅读
  2. opencv进行人脸识别

    2024-04-28 12:08:03       27 阅读
  3. opencv实现视频人脸识别

    2024-04-28 12:08:03       23 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-28 12:08:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-28 12:08:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-28 12:08:03       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-28 12:08:03       20 阅读

热门阅读

  1. L2-052 吉利矩阵

    2024-04-28 12:08:03       11 阅读
  2. Centos编译安装python3.9

    2024-04-28 12:08:03       13 阅读
  3. 生成对抗网络(GAN)

    2024-04-28 12:08:03       11 阅读
  4. 《AI音频类工具之二—— 讯飞智作》

    2024-04-28 12:08:03       11 阅读
  5. 【NTN 卫星通信】NTN应该使用FDD还是TDD双工模式

    2024-04-28 12:08:03       11 阅读
  6. Linux 权限提升 - 信息收集 清单

    2024-04-28 12:08:03       14 阅读
  7. 模拟开关的选型使用注意事项

    2024-04-28 12:08:03       9 阅读
  8. Android Room使用模板

    2024-04-28 12:08:03       12 阅读
  9. 电力电子技术——PWM控制技术

    2024-04-28 12:08:03       13 阅读
  10. MySQL的约束

    2024-04-28 12:08:03       10 阅读
  11. 记录不熟悉的函数用法(C++)——insert

    2024-04-28 12:08:03       12 阅读