• face_recognition库实现人脸识别demo


    项目大体思路是这样的:先准备俩张图片,提取特征向量然后存储起来,让后拿第三章人脸图片来检测,查看是否匹配,匹配则输出名字和图像。

     主要方法:

    demo:

    1. # 1、加载库
    2. import face_recognition
    3. import cv2
    4. import numpy as np
    5. # 2、加载图片
    6. fei =cv2.imread("../images/liyifei3.jpg")
    7. en = cv2.imread("../images/chenqiaoen.jpg")
    8. # 3、BGR转换RGB(逆序)
    9. fei_RGB = fei[:,:,::-1]
    10. en_RGB = en[:,:,::-1]
    11. # 4、检测人脸
    12. fei_face = face_recognition.face_locations(fei_RGB)
    13. en_face = face_recognition.face_locations(en_RGB)
    14. # 5、人脸特征编码
    15. fei_encoding = face_recognition.face_encodings(fei_RGB,fei_face)[0] #0表示第一张人脸
    16. en_encoding = face_recognition.face_encodings(en_RGB,en_face)[0]
    17. # 6、把所有人脸组合在一起,当数据库使用
    18. encodings = [fei_encoding,en_encoding]
    19. names = ["liyifei","chenqiaoen"]
    20. # 7、打开摄像头,读取视频流
    21. cap = cv2.VideoCapture(0)
    22. if not cap.isOpen():
    23. raise IOError("Camera Rrror")
    24. while True:
    25. ret,frame = cap.read()
    26. #调整窗口大小为一半
    27. frame = cv2.resize(frame,(0,0),fx=0.5,fy=0.5)
    28. # 8、BRG转换RGB
    29. frame_RGB = frame[:,:,::-1]
    30. # 9、读取每一帧,人脸检测
    31. faces_locations = face_recognition.face_locations(frame_RGB)
    32. # 10、人脸特征编码
    33. facces_locations = face_recognition.face_encodings(frame_RGB,faces_locations)
    34. # 11、与数据库中的所有人脸进行匹配(拿到对应的特征和编码)
    35. for (top,right,bottom,left),face_encoding in zip(faces_locations,faces_locations):
    36. # 12、进行匹配
    37. matches = face_recognition.compare_faces(encodings,face_encoding)
    38. # 13、计算俩张图片的欧氏距离
    39. distance = face_recognition.face_distance(encodings,face_encoding)
    40. min_distance = np.argmin(distance) #0,1,2
    41. # 14、判断距离,很近是同一个人,如果很远就不是同一个人,获取名字,匹配或取名字,不匹配返货unkonw
    42. name = "Unknown"
    43. if matches[min_distance]:
    44. name = names[min_distance]
    45. # 15、人脸画矩形框和名称
    46. cv2.rectangle(frame,(left,top),(top,right),(0,255,0),3)
    47. # 16、绘制显示对应人脸的名字
    48. cv2.rectangle(frame,(left,bottom-30),(right,bottom),(0,0,255),3)
    49. # 17、显示名字
    50. cv2.putText(frame,name,(left+10,bottom-10),cv2.FONT_HERSHEY_COMPLEX,1,(255,255,255),1)
    51. #判断是q按键,退出
    52. cv2.imshow("face recoginition",frame)
    53. if cv2.waitKey(1) & 0xFF == ord('q'):
    54. break
    55. # 18、释放资源
    56. cap.release()
    57. cv2.destroyAllWindows()

     

  • 相关阅读:
    Matlab用深度学习循环神经网络RNN长短期记忆LSTM进行波形时间序列数据预测
    3种在ArcGIS Pro中制作山体阴影的方法
    算法刷题-16
    测试集为什么不能当做验证集使用?
    linux内核源码分析 - nvme设备的初始化
    win 服务操作 删除服务
    【pytorch】1.6 tensor 计算
    物联网浏览器(IoTBrowser)-使用深度学习开发防浸水远程报警
    电脑技巧:PrivaZer电脑清理工具介绍
    Springboot和vue实现文件导入
  • 原文地址:https://blog.csdn.net/chehec2010/article/details/126937354