本帖最后由 liuli 于 2024-6-5 19:03 编辑
首先我的python都是在网上学的也没有学太深,所以一些格式或者别的有点问题,但是肯定能运行,我都在本地运行过了。
至于如何用python实现开发可以看这篇文章:小白用小安派学习过程第四篇
之后可以看看妖猊这位大佬的其他帖子。
好了现在就让电脑看看你吧。
- import cv2
- import paChong
- from openpyxl import load_workbook
- # 准备好识别方法
- recognizer = cv2.face.LBPHFaceRecognizer_create()
- # 再次调用人脸分类器
- cascade_path = "haarcascade_frontalface_default.xml"
- face_cascade = cv2.CascadeClassifier(cascade_path)
- # 加载一个字体,用于识别后,在图片上标注出对象的名字
- font = cv2.FONT_HERSHEY_SIMPLEX
- # 将人像编号对应的姓名输入进去
- #这里可以使用数据库或者用表格
- names = ['0', '1', '2', '3', '4']
- #将你的人像和模型文件夹内的模型一一对比,最好将脸正对摄像头
- for i in os.listdir("trainner/"):
- #使用之前训练好的模型
- recognizer.read('trainner/' + i)
- #调用摄像头
- cam = cv2.VideoCapture(0)
- minW = 0.1 * cam.get(3)
- minH = 0.1 * cam.get(4)
- huan = 0
- while True:
- ret, img = cam.read()
- gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
- #识别人脸
- faces = face_cascade.detectMultiScale(
- gray,
- scaleFactor=1.2,
- minNeighbors=5,
- minSize=(int(minW), int(minH))
- )
- #进行校验
- for (x, y, w, h) in faces:
- cv2.rectangle(img, (x, y), (x + w, y + h), (0, 255, 0), 2)
- # 预测值小于100表示可信,越小越可信
- idnum, confidence = recognizer.predict(gray[y:y + h, x:x + w])
- #计算出一个检验结果,round返回浮点数x的四舍五入值。
- jieGuo = round(100 - confidence)
- if 0 <= round(confidence) <= 80:
- mingBianHao = int(i.split(".")[0])
- # print(mingBianHao)
- # 这里就可以根据模型文件名读取表格或者数据库单个人名
- idum = names[mingBianHao]
- confidence = "{}%".format(jieGuo)
- else:
- idum = "???"
- confidence = "{}%".format(jieGuo)
- huan = 1
- # break
- #输出检验结果以及用户名
- cv2.putText(img, str(idum), (x + 5, y - 5), font, 1, (0, 0, 255), 1)
- cv2.putText(img, str(confidence), (x + 5, y + h - 5), font, 1, (0, 0, 0), 1)
- #展示结果
- cv2.imshow('camera', img)
- if cv2.waitKey(1) == 27:
- break
- elif huan == 1:
- break
- #释放资源
- cam.release()
- cv2.destroyAllWindows()
复制代码
好了,现在你的电脑就会在屏幕上框住你的脸并显示你叫什么了。
|