今天配置了一天的开发环境,终于写了一套人脸识别的程序c0ee41f1433e555ea7184032fac545e5.pngc0ee41f1433e555ea7184032fac545e5.pngc0ee41f1433e555ea7184032fac545e5.pngebfee56b2839bb036bdcc2181b12b8cf.png
    用的库是face_recognition,这是一款免费、开源、实时、离线的Python人脸识别库。Github网址为https://github.com/ageitgey/face_recognition。

    我电脑上安装了Anaconda,dlib会自动获取。Windows系统安装dlib可直接在网站https://pypi.org/simple/dlib/下载对应版本的whl文件,用pip安装,简单高效。

852b0367596d6a054d3d455cd8c6eb49.png

c7f104e91e5ea7cff495249013ed45a0.png

#读取照片并圈出人脸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)人脸比对

200d68dac2ea3bfe3220b86cf8e8ec66.png

最后的实现

哈哈哈

有点酷

留言区

更多推荐