30行代码实现人脸识别

本次的主题是使用face_recognition实现人脸识别

导入需要的库,只有两个!

import face_recognition
import cv2

接下来是获取图片中人脸的信息

face_image = face_recognition.load_image_file(r"pj.jpg")#导入图片
face_image1 = face_recognition.load_image_file(r"xjp.jpg")
face_encondings = face_recognition.face_encodings(face_image)#遍历人脸
face_encondings1 = face_recognition.face_encodings(face_image1)
face_locations = face_recognition.face_locations(face_image)#人脸位置
face_locations1 = face_recognition.face_locations(face_image1)

然后是人脸的对比,这个库已经训练好了,所以只需一行就能进行识别

face1 = face_encondings[0]
face2 = face_encondings1[0]
result = face_recognition.compare_faces([face1], face2, tolerance=0.5)  # 识别
print(result)
print(type(result))#因为输出的result为列表的true或false
if result[0] == True:
    put = 'yes'
else:
    put = 'unknow'

接下来就是对于图片的最后处理

face_location = face_locations1[0]#获取图片位置,为下图做准备
top,right,bottom,left=face_location#获取坐标
cv2.rectangle(face_image1,(left,top),(right,bottom),(0,255,0),2)#在图中画出框

cv2.putText(face_image1,put,(left-10,top-10),cv2.FAST_FEATURE_DETECTOR_NONMAX_SUPPRESSION,2,(255,0,0),2)
#在图中写出是否识别成功
face_image_rgb1= cv2.cvtColor(face_image1,cv2.COLOR_RGB2BGR)
#将图片从灰度调回彩色
cv2.putText(face_image,'pujing',(left-50,top-10),cv2.FAST_FEATURE_DETECTOR_NONMAX_SUPPRESSION,1.5,(255,0,0),2)

face_image_rgb = cv2.cvtColor(face_image, cv2.COLOR_RGB2BGR)

cv2.imshow('output',face_image_rgb)
cv2.imshow('output1',face_image_rgb1)#展示两张图片
cv2.waitKey(0)

上效果图
30行代码实现人脸识别_第1张图片
当然要是只能识别一个人也太鸡肋了,改点地方就能多个识别
30行代码实现人脸识别_第2张图片
只需加一个循环即可
效果图30行代码实现人脸识别_第3张图片
当然可能不满足于图片,还想尝试摄像头拍摄识别的,可以打开摄像头执行拍照功能接着和图片库识别

# cap = cv2.VideoCapture(0)
# ret, frame = cap.read() # show a frame
# cv2.imshow("qcapture", frame)
# cv2.imwrite("photo.jpg",frame)

,这个库我感觉是做人脸识别测试最简单易用的库了,至于我为什么不开摄像头给自己做效果图,之中原因我就不多说了,大家心里明了,我怕陈彦祖太好看。

你可能感兴趣的:(30行代码实现人脸识别)