Xiaobai can learn to use Python for face recognition, and all 30 lines of code are explained clearly!

Thirty lines of Python code to achieve simple face recognition


1. Library introduction


opencv, face_recognition, numpy, and dlib
Note: The
installation speed of opencv may be too slow, you need to replace the domestic mirror source, reference: https://blog.csdn.net/X_xs_mxt/article/details/107069379
comes with Python3.7, 64 -bit version dlib whl download path:
link: https://pan.baidu.com/s/1jOmwQ2OpJcbyYPSMisIFlg
extraction code: to50

Many people learn python and after mastering the basic grammar, they don't know where to find cases to get started.

Many people who have done case studies do not know how to learn more advanced knowledge.

So for these three types of people, I will provide you with a good learning platform, free to receive video tutorials, e-books, and the source code of the course!

QQ group: 701698587

Second, the library installation

 

pip install opencv-python
pip install face_recognition
pip install numpy



The dlib library needs to be installed in the whl file path

pip install dlib-19.17.99-cp37-cp37m-win_amd64.whl



Three, a brief introduction to the face_recognition library


The load_image_file method of face_recognition will load the image and return an ndarray type of data

face_path = "C://Users//25103//Desktop//Python人脸识别//face//徐先生.jpg"
image = face_recognition.load_image_file(face_path)



The face_encoding method of face_recognition can extract face features from the returned ndarray type data, and can extract multiple features at the same time, and the return value is a list type

face_encoding = face_recognition.face_encodings(image)[0]



The face_location method of face_recognition can get the location of all faces in the picture, and the return value is a list

face_locations = face_recognition.face_locations(rgb_frame)



Four, code implementation and comment explanation

# coding = utf-8
import dlib
import cv2
import face_recognition
import os

# 创建视频对象
video_capture = cv2.VideoCapture(0)

# 加载需要识别的人脸图片(这张图片需要仅有一张脸)
# face_recognition的load_image_file方法会加载图片,并返回一个ndarray类型的数据
# ndarray类型就是NumPy的数组类型,其中的元素类型可以一致也可以不一致
face_path = "C://Users//25103//Desktop//Python人脸识别//face//徐先生.jpg"
image = face_recognition.load_image_file(face_path)

# face_recognition的face_encoding方法,可从返回的ndarray类型数据中提取人脸特征,可同时提取多个特征,返回值为列表类型
# 因为照片中只有一个人脸,所以我们取列表的第一个值
face_encoding = face_recognition.face_encodings(image)[0]

while True:
    # 从视频对象中读取一帧照片
    ret,frame = video_capture.read()
    # 将照片缩小,加快处理速度,这里将其缩小为原图的1/4
    # frame = cv2.rectangle(frame,(0,0),fx=0.25,fy=0.25)
    # 因为cv2用的是BGR色彩,我们组要将其转化为RGB进行处理
    rgb_frame = frame[:,:,::-1] # 列表转置操作

    # face_recognition的face_location方法可以获取图片中所有人脸的位置,其返回值为一个列表
    face_locations = face_recognition.face_locations(rgb_frame)
    print("共从视频中找到了{}张人脸".format(len(face_locations)))

    # 获取视频中所有人脸的特征
    face_encodings = face_recognition.face_encodings(rgb_frame,face_locations)

    for face in face_encodings:
        # 比较两个特征值——encoding1与encoding2,匹配返回True,否则返回False。tolerance越低,顾名思义,容错率越低,返回值为列表类型
        match = face_recognition.compare_faces([face_encoding],face,tolerance=0.4)
        name = "不认识的人"

        if match[0]:
            # face为图片名称
            name = os.path.basename(face_path[0:-4])
        print("找到了{}".format(name))


 

Guess you like

Origin blog.csdn.net/Python_kele/article/details/115273771