face_recognition库实现人脸识别demo

Posted 月疯

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了face_recognition库实现人脸识别demo相关的知识,希望对你有一定的参考价值。

项目大体思路是这样的:先准备俩张图片,提取特征向量然后存储起来,让后拿第三章人脸图片来检测,查看是否匹配,匹配则输出名字和图像。

 主要方法:

demo:

# 1、加载库
import face_recognition
import cv2
import numpy as np
# 2、加载图片
fei =cv2.imread("../images/liyifei3.jpg")
en = cv2.imread("../images/chenqiaoen.jpg")
# 3、BGR转换RGB(逆序)
fei_RGB = fei[:,:,::-1]
en_RGB = en[:,:,::-1]
# 4、检测人脸
fei_face = face_recognition.face_locations(fei_RGB)
en_face = face_recognition.face_locations(en_RGB)
# 5、人脸特征编码
fei_encoding = face_recognition.face_encodings(fei_RGB,fei_face)[0] #0表示第一张人脸
en_encoding = face_recognition.face_encodings(en_RGB,en_face)[0]
# 6、把所有人脸组合在一起,当数据库使用
encodings = [fei_encoding,en_encoding]
names = ["liyifei","chenqiaoen"]
# 7、打开摄像头,读取视频流
cap = cv2.VideoCapture(0)

if not cap.isOpen():
    raise IOError("Camera Rrror")
while True:
    ret,frame = cap.read()
    #调整窗口大小为一半
    frame = cv2.resize(frame,(0,0),fx=0.5,fy=0.5)
    # 8、BRG转换RGB
    frame_RGB = frame[:,:,::-1]
    # 9、读取每一帧,人脸检测
    faces_locations = face_recognition.face_locations(frame_RGB)
    # 10、人脸特征编码
    facces_locations = face_recognition.face_encodings(frame_RGB,faces_locations)
    # 11、与数据库中的所有人脸进行匹配(拿到对应的特征和编码)
    for (top,right,bottom,left),face_encoding in zip(faces_locations,faces_locations):
        # 12、进行匹配
        matches = face_recognition.compare_faces(encodings,face_encoding)
        # 13、计算俩张图片的欧氏距离
        distance = face_recognition.face_distance(encodings,face_encoding)
        min_distance = np.argmin(distance) #0,1,2
        # 14、判断距离,很近是同一个人,如果很远就不是同一个人,获取名字,匹配或取名字,不匹配返货unkonw
        name = "Unknown"
        if matches[min_distance]:
            name = names[min_distance]

        # 15、人脸画矩形框和名称
        cv2.rectangle(frame,(left,top),(top,right),(0,255,0),3)
        # 16、绘制显示对应人脸的名字
        cv2.rectangle(frame,(left,bottom-30),(right,bottom),(0,0,255),3)
        # 17、显示名字
        cv2.putText(frame,name,(left+10,bottom-10),cv2.FONT_HERSHEY_COMPLEX,1,(255,255,255),1)
    #判断是q按键,退出
    cv2.imshow("face recoginition",frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break
# 18、释放资源
cap.release()
cv2.destroyAllWindows()






 

以上是关于face_recognition库实现人脸识别demo的主要内容,如果未能解决你的问题,请参考以下文章

识别人脸face_recognition实现

[深度学习] Python人脸识别库face_recognition使用教程

一个很强大的人脸识别库face_recognition

一个很强大的人脸识别库face_recognition

184Win10下Java8调用Python的face_recognition库来实现人脸识别

山东大学项目实训四——Face_Recognition 使用Opencv和Dlib实现基于视频的人脸识别