Python安装face

在此我使用的是GitHub上开源的一个星数非常高的项目,链接为:链接 

一)windows环境下安装该项目:

1、代开pycharm,找到下面的终端,依次输入如下指令:

在安装dlib时会非常的慢,并且有警告不用管多等一会,博主大概进行了三四分钟才安装完成

pip install cmake
pip install boost
pip install dlib
pip install face_recognition

此时我们所有的准备工作都做完了,导入一下face_recognition包若不报错即安装成功啦;

二)开始使用:

        官方使用文档链接:使用文档

1、API解析:

方法说明返回值
load_image_file(图片对象)将图片转化为下面使用的对象对象
face_locations(1对象)查找人脸位置返回人脸所在的区域矩形
face_encodings(1对象)将图片中的人脸转化为特征坐标返回list,将识别到的所有人脸都按坐标返回
compare_faces(encodings数组,待测人脸encodings一个对象)将待测的在总的数组中对比返回一个Boolen类型的数组,判断时用in判断
三)使用代码:
import os #  *** 作文件
import cv2 # 绘制矩形框
from PIL import Image # 绘制图片
import face_recognition # 人脸识别库

# 下面三个是额外方法,不是库内包括的。
# 将识别到的人脸绘制出来
def print_image(face, image):
    for face_location in face:
        # 坐标的返回顺序是top, right, bottom, left
        top, right, bottom, left = face_location
        face_image = image[top:bottom, left:right]
        pil_image = Image.fromarray(face_image)
        pil_image.show()

# 根据坐标在图片中画出框框
def print_image_tru(images, image_list):
    image = cv2.imread(images)
    # (top, right, bottom, left)
    for one in image_list:
        y1 = one[0]
        x1 = one[3]
        y2 = one[2]
        x2 = one[1]
        cv2.rectangle(image, (x1, y1), (x2, y2), (0, 0, 255), 2)
    cv2.imshow("fff", image)
    cv2.waitKey()

# 将目录中的图片加载到已知人脸库中
def get_face_data():
    base_path = 'image/face_data'
    name_content = os.listdir(base_path)
    image_encoding_content = []
    for one in name_content:
        img = base_path + "/" + str(one)
        load = face_recognition.load_image_file(img)
        encodings = face_recognition.face_encodings(load)[0]
        image_encoding_content.append(encodings)
    return name_content, image_encoding_content


# 1、查找人脸的个数
def count_face(images):
    image = face_recognition.load_image_file(images)
    face_locations = face_recognition.face_locations(image)
    print(f"该照片中识别出了{len(face_locations)}张人脸")
    print_image_tru(images, face_locations)  # 用矩形框画出人脸


# 2、人脸识别
def face_recognitions(data_base_image, tmp_image):
    # 1、将传来的图片转化为人脸编码:
    picture_of_tmp = face_recognition.load_image_file(tmp_image)
    # 2、识别目标中人脸的编码,由于图中可能没用人脸所以可能会抛出异常
    try:
        # 获取人脸的编码,上面加载的图片会有多个人脸,所以face_recognition.face_encodings返回一个列表
        # 由于示例图片我只选取了有一个人脸的图片,所以直接选取了第一个元素
        tmp_encoding = face_recognition.face_encodings(picture_of_tmp)[0]
    except IndexError:
        print('未识别出人脸')
        return

    # 开始进行人脸比对,compare_faces第一个参数是数据库中的所有已经存在人脸,
    # 返回一个列表,表示与上述数据库中第几个人脸匹配成功
    results = face_recognition.compare_faces(data_base_image[1], tmp_encoding)

    if True in results:
        index = results.index(True)
        names = data_base_image[0][index].split('.')[0]
        print(f"人脸验证成功,身份是{names}")
    else:
        print("验证失败")


tmp_image = r'要测试的人脸图片'
tuple_data = get_face_data()
face_recognitions(tuple_data, tmp_image)

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/943248.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-18
下一篇 2022-05-18

发表评论

登录后才能评论

评论列表(0条)

保存