一个很强大的人脸识别库face_recognition
Posted 月疯
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个很强大的人脸识别库face_recognition相关的知识,希望对你有一定的参考价值。
官方网址:https://github.com/ageitgey/face_recognition
在图片中查找面孔:
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)
应用数字化妆
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 库一起使用来进行实时人脸识别:
要求
- Python 3.3+ 或 Python 2.7
- macOS 或 Linux(Windows 不受官方支持,但可能有效)
pip3
最后,使用(或pip2
用于 Python 2)从 pypi 安装此模块:
pip3 install face_recognition
人脸检测
面部特征
面部识别
- 根据已知人物的照片查找和识别照片中的未知面孔
- 识别并在照片中的每个人周围画出方框
- 通过数字人脸距离比较人脸,而不仅仅是真/假匹配
- 使用网络摄像头识别实时视频中的人脸 - 简单/慢速版本(需要安装 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()
以上是关于一个很强大的人脸识别库face_recognition的主要内容,如果未能解决你的问题,请参考以下文章
MLKit 是一个强大易用的工具包。通过 ML Kit 您可以很轻松的实现文字识别条码识别图像标记人脸检测对象检测等功能
MLKit 是一个强大易用的工具包。通过 ML Kit 您可以很轻松的实现文字识别条码识别图像标记人脸检测对象检测等功能