python-人像识别-(三)完结让电脑认识你

[复制链接]
查看1377 | 回复5 | 2024-6-5 19:03:07 | 显示全部楼层 |阅读模式
本帖最后由 liuli 于 2024-6-5 19:03 编辑

首先我的python都是在网上学的也没有学太深,所以一些格式或者别的有点问题,但是肯定能运行,我都在本地运行过了。
至于如何用python实现开发可以看这篇文章:小白用小安派学习过程第四篇
之后可以看看妖猊这位大佬的其他帖子。

好了现在就让电脑看看你吧。

  1. import cv2
  2. import paChong
  3. from openpyxl import load_workbook

  4. # 准备好识别方法
  5. recognizer = cv2.face.LBPHFaceRecognizer_create()

  6. # 再次调用人脸分类器
  7. cascade_path = "haarcascade_frontalface_default.xml"
  8. face_cascade = cv2.CascadeClassifier(cascade_path)

  9. # 加载一个字体,用于识别后,在图片上标注出对象的名字
  10. font = cv2.FONT_HERSHEY_SIMPLEX

  11. # 将人像编号对应的姓名输入进去
  12. #这里可以使用数据库或者用表格
  13. names = ['0', '1', '2', '3', '4']


  14. #将你的人像和模型文件夹内的模型一一对比,最好将脸正对摄像头
  15. for i in os.listdir("trainner/"):
  16.     #使用之前训练好的模型
  17.     recognizer.read('trainner/' + i)
  18.     #调用摄像头
  19.     cam = cv2.VideoCapture(0)
  20.     minW = 0.1 * cam.get(3)
  21.     minH = 0.1 * cam.get(4)
  22.     huan = 0
  23.     while True:
  24.         ret, img = cam.read()
  25.         gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
  26.         #识别人脸
  27.         faces = face_cascade.detectMultiScale(
  28.             gray,
  29.             scaleFactor=1.2,
  30.             minNeighbors=5,
  31.             minSize=(int(minW), int(minH))
  32.         )
  33.         #进行校验
  34.         for (x, y, w, h) in faces:
  35.             cv2.rectangle(img, (x, y), (x + w, y + h), (0, 255, 0), 2)
  36.             # 预测值小于100表示可信,越小越可信
  37.             idnum, confidence = recognizer.predict(gray[y:y + h, x:x + w])

  38.             #计算出一个检验结果,round返回浮点数x的四舍五入值。
  39.             jieGuo = round(100 - confidence)
  40.             if 0 <= round(confidence) <= 80:
  41.                 mingBianHao = int(i.split(".")[0])
  42.                 # print(mingBianHao)
  43.                 # 这里就可以根据模型文件名读取表格或者数据库单个人名
  44.                 idum = names[mingBianHao]
  45.                 confidence = "{}%".format(jieGuo)
  46.             else:
  47.                 idum = "???"
  48.                 confidence = "{}%".format(jieGuo)
  49.                 huan = 1
  50.                 # break

  51.             #输出检验结果以及用户名
  52.             cv2.putText(img, str(idum), (x + 5, y - 5), font, 1, (0, 0, 255), 1)
  53.             cv2.putText(img, str(confidence), (x + 5, y + h - 5), font, 1, (0, 0, 0), 1)
  54.             #展示结果
  55.             cv2.imshow('camera', img)

  56.         if cv2.waitKey(1) == 27:
  57.             break
  58.         elif huan == 1:
  59.             break
  60. #释放资源
  61. cam.release()
  62. cv2.destroyAllWindows()
复制代码



好了,现在你的电脑就会在屏幕上框住你的脸并显示你叫什么了。


回复

使用道具 举报

lovzx | 2024-6-5 21:08:46 | 显示全部楼层
学习
回复

使用道具 举报

WT_0213 | 2024-6-6 08:28:31 | 显示全部楼层
回复

使用道具 举报

wxlinus | 2024-6-6 08:53:50 | 显示全部楼层
这个是用哪个板子实现的了
回复 支持 反对

使用道具 举报

bzhou830 | 2024-6-7 10:42:43 | 显示全部楼层
选择去发光,而不是被照亮
回复

使用道具 举报

xiaoch669 | 2024-6-11 11:37:30 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则