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

官方网址:https://github.com/ageitgey/face_recognition

一个很强大的人脸识别库face_recognition_第1张图片 

一个很强大的人脸识别库face_recognition_第2张图片 

在图片中查找面孔:

import face_recognition
image = face_recognition.load_image_file("your_file.jpg")
face_locations = face_recognition.face_locations(image)

 查找和操作图片中的面部特征

import face_recognition
image = face_recognition.load_image_file("your_file.jpg")
face_landmarks_list = face_recognition.face_landmarks(image)

应用数字化妆

一个很强大的人脸识别库face_recognition_第3张图片

import face_recognition
known_image = face_recognition.load_image_file("biden.jpg")
unknown_image = face_recognition.load_image_file("unknown.jpg")

biden_encoding = face_recognition.face_encodings(known_image)[0]
unknown_encoding = face_recognition.face_encodings(unknown_image)[0]

results = face_recognition.compare_faces([biden_encoding], unknown_encoding)

 将此库与其他 Python 库一起使用来进行实时人脸识别:

一个很强大的人脸识别库face_recognition_第4张图片

 

要求

  • Python 3.3+ 或 Python 2.7
  • macOS 或 Linux(Windows 不受官方支持,但可能有效)

pip3最后,使用(或pip2用于 Python 2)从 pypi 安装此模块:

pip3 install face_recognition

人脸检测

  • 在照片中查找面孔
  • 在照片中查找人脸(使用深度学习)
  • 使用 GPU 在批量图像中查找人脸(使用深度学习)
  • 使用网络摄像头模糊实时视频中的所有面孔(需要安装 OpenCV)

面部特征

  • 识别照片中的特定面部特征
  • 应用(非常丑陋的)数字化妆

面部识别

  • 根据已知人物的照片查找和识别照片中的未知面孔
  • 识别并在照片中的每个人周围画出方框
  • 通过数字人脸距离比较人脸,而不仅仅是真/假匹配
  • 使用网络摄像头识别实时视频中的人脸 - 简单/慢速版本(需要安装 OpenCV)
  • 使用网络摄像头识别实时视频中的人脸 - 更快版本(需要安装 OpenCV)
  • 识别视频文件中的人脸并写出新的视频文件(需要安装 OpenCV)
  • 使用摄像头识别 Raspberry Pi 上的人脸
  • 运行 Web 服务以通过 HTTP 识别人脸(需要安装 Flask)
  • 使用 K 近邻分类器识别人脸
  • 每人训练多张图像,然后使用 SVM 识别人脸

 我字节写了个demo:

#1、导入库
#2、显示图片
#3、绘制Landmarks关键点
#4、主函数
#注意本想母官方只支持mac和linux系统,windows不支持,还没解决
import face_recognition
import cv2
import matplotlib.pyplot as plt

#显示关键点
def show_landmarks(image,landmarks):
    for landmarks_dict in landmarks:
        for landmarks_key in landmarks_dict.keys():
            for point in landmarks_dict[landmarks_key]:
                cv2.circle(image,point,3,(0,0,255),-1)
    #返回绘制后的图片
    return image
def show_img(image,title): #传过来图片和标题
    plt.title(title)
    plt.imshow(image)
    plt.axis("off") #关闭x轴和y轴
def main():
    #5、读取图片
    image = cv2.imread("../images/liuyifei.jpg")

    #6、图片灰度转换
    gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)

    #7、调用face_recognition库方法:face_landmarks()获取人脸关键点
    face_marks = face_recognition.face_landmarks(gray,None,"large")#None不知道几个人脸,让系统自己去找;large是68个点,small是5个点
    print(face_marks)
    #8、绘制关键点
    img_result = show_landmarks(image.copy(),face_marks) #复制一份原始图片

    #9、创建画布
    plt.figure(figsize=(9,6))
    plt.suptitle("Face Landmarks with face_recognition",fontsize=14,fontweight="bold")

    #10、显示整体效果
    show_img(img_result, "landmarks")

if __name__ == "__main__":
    main()

你可能感兴趣的