基于face_recognition实现图片识别

Face Recognition 是一个基于 Python 的人脸识别库,它还提供了一个命令行工具,让你通过命令行对任意文件夹中的图像进行人脸识别操作。

该库使用 dlib 顶尖的深度学习人脸识别技术构建,在户外脸部检测数据库基准(Labeled Faces in the Wild benchmark)上的准确率高达 99.38%。

此篇博文利用face_recognition实现了一个简单的图片识别。

待识别的图片在unknow_people文件夹下:分别为范冰冰、杨颖、刘亦菲、迪丽热巴、邓超。

计算机认识的图片在know_people文件夹下:分别为刘亦菲、迪丽热巴

利用face_recognition将unknow_people文件夹下的图片与know_people文件夹下的图片进行对比,进行图片识别。

import face_recognition
import os

# 获取图片名列表
# 只读取文件名以'.png'或'.jpg'或'.jpeg'结尾的图片
unknow_people_list = [i for i in os.listdir('unknow_people') if (i.endswith('.jpg')) or (i.endswith('.png')) or (i.endswith('.jpeg'))]
know_people_list = [i for i in os.listdir('know_people') if (i.endswith('.jpg')) or (i.endswith('.png')) or (i.endswith('.jpeg'))]


def face_select():
    # 定义flag
    flag = 0
    for unknow_people in unknow_people_list:
        # 读取待识别图片
        unknow = face_recognition.load_image_file('unknow_people/' + unknow_people)
        # 待识别图片转化为特征向量
        unknow_encode = face_recognition.face_encodings(unknow)[0]
        for know_people in know_people_list:
            # 读取计算机已经认识的图片
            know = face_recognition.load_image_file('know_people/'+know_people)
            # 图片转化为特征向量
            know_encode = face_recognition.face_encodings(know)[0]
            # 两张图片进行比较
            # tolerance刻画了比较的难易程度,值越小越难
            res = face_recognition.compare_faces([know_encode],unknow_encode,tolerance=0.5)
            if res[0]:
                flag = 1
                break
            else:
                flag = 0
        if flag == 1:
            print(f'匹配{unknow_people.split(".")[0]}')
        else:
            print(f'未匹配{unknow_people.split(".")[0]}')


if __name__ == '__main__':
    face_select()

运行结果如下:

运行结果正如我们所期待,know_people文件夹下只有刘亦菲和迪丽热巴,因此代码只匹配了刘亦菲与迪丽热巴而没有匹配邓超、杨颖、范冰冰。

本人也是计算机视觉的小白,希望能不断向各位大佬学习,不断进步~

猜你喜欢

转载自blog.csdn.net/gf19960103/article/details/89914024
今日推荐