本次的主题是使用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)
上效果图
当然要是只能识别一个人也太鸡肋了,改点地方就能多个识别
只需加一个循环即可
效果图
当然可能不满足于图片,还想尝试摄像头拍摄识别的,可以打开摄像头执行拍照功能接着和图片库识别
# cap = cv2.VideoCapture(0)
# ret, frame = cap.read() # show a frame
# cv2.imshow("qcapture", frame)
# cv2.imwrite("photo.jpg",frame)
,这个库我感觉是做人脸识别测试最简单易用的库了,至于我为什么不开摄像头给自己做效果图,之中原因我就不多说了,大家心里明了,我怕陈彦祖太好看。