今天配置了一天的开发环境,终于写了一套人脸识别的程序
用的库是face_recognition,这是一款免费、开源、实时、离线的Python人脸识别库。Github网址为https://github.com/ageitgey/face_recognition。
我电脑上安装了Anaconda,dlib会自动获取。Windows系统安装dlib可直接在网站https://pypi.org/simple/dlib/下载对应版本的whl文件,用pip安装,简单高效。
#读取照片并圈出人脸import numpy as npimport cv2import face_recognitionimage = face_recognition.load_image_file("mypic.jpg")#return (A,B,C,D)(top, right, bottom, left) (D,A,B,C)face_locations = face_recognition.face_locations(image)print(face_locations)image1=image*1image1[:,:,0]=image[:,:,2]image1[:,:,2]=image[:,:,0]for (A,B,C,D) in face_locations: cv2.rectangle(image1,(D,A),(B,C),(0,255,0),2)cv2.imshow('image',image1)cv2.waitKey(0)cv2.destroyAllWindows()
(1)从本地读图片并使用face_recognition和opencv识别人脸并标注显示
#摄像头读取并识别人脸import numpy as npimport cv2 import face_recognitioncap=cv2.VideoCapture(0)while True: ret,frame=cap.read() #return (A,B,C,D)(top, right, bottom, left) (D,A,B,C) face_locations = face_recognition.face_locations(frame) for (A,B,C,D) in face_locations: cv2.rectangle(frame,(D,A),(B,C),(0,255,0),2) cv2.imshow('image',frame) if cv2.waitKey(1)& 0xFF == ord('q'): breakcap.release()cv2.destroyAllWindows()
(2)从摄像头读取图像并显示
#人脸比对,单对单的比对,和多对单的比对import numpy as npimport cv2import face_recognitionzhujun=face_recognition.face_encodings(face_recognition.load_image_file('zhujun.jpg'))dongqing=face_recognition.face_encodings(face_recognition.load_image_file('dongqing.jpg'))#ss=face_recognition.compare_faces([dongqing,lisisi],zhujun)#hezhao=face_recognition.face_encodings(face_recognition.load_image_file('mypic.jpg'))#ss=face_recognition.compare_faces(hezhao,lisisi,0.5)hezhao=face_recognition.load_image_file('mypic.jpg') locations=face_recognition.face_locations(hezhao)for [A,B,C,D] in locations: face=hezhao[A:C,D:B,:] faceencoding=face_recognition.face_encodings(face) ss=face_recognition.compare_faces(faceencoding,zhujun[0],0.5) print(ss)
(3)人脸比对
最后的实现
哈哈哈
有点酷
留言区