Xiaobaiは、顔認識にPythonを使用する方法を学ぶことができ、30行のコードすべてが明確に説明されています。

単純な顔認識を実現するための30行のPythonコード


1.ライブラリの紹介


OpenCVの、face_recognition、numpyの、およびDLIBの
注:
OpenCVのインストールのスピードが遅すぎるかもしれ、あなたは国内のミラー元を交換する必要があり、参照:https://blog.csdn.net/X_xs_mxt/article/details/107069379は
付属していますPython3.7、64ビットバージョンのdlib whlダウンロードパス:
リンク:https ://pan.baidu.com/s/1jOmwQ2OpJcbyYPSMisIFlg
抽出コード:to50

多くの人がPythonを学び、基本的な文法を習得した後、どこから始めればよいかわかりません。

事例研究を行った多くの人々は、より高度な知識を学ぶ方法を知りません。

したがって、これら3つのタイプの人々のために、ビデオチュートリアル、電子書籍、およびコースのソースコードを無料で受け取ることができる優れた学習プラットフォームを提供します。

QQグループ:701698587

第二に、ライブラリのインストール

 

pip install opencv-python
pip install face_recognition
pip install numpy



dlibライブラリはwhlファイルパスにインストールする必要があります

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



3、face_recognitionライブラリの簡単な紹介


face_recognitionのload_image_fileメソッドは、画像を読み込み、ndarrayタイプのデータを返します。

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]



face_recognitionのface_locationメソッドは、画像内のすべての顔の位置を取得でき、戻り値はリストです。

face_locations = face_recognition.face_locations(rgb_frame)



4、コードの実装とコメントの説明

# 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))


 

おすすめ

転載: blog.csdn.net/Python_kele/article/details/115273771