Python人脸识别(3)——实现人脸识别
用户需要在此添加场次号+座位号,下标序号要与名字对应(ID从0开始,依次递增)# 阈值为110(即匹配指数大于等于90即可验证通过人脸)print("匹配指数:", confidence)print("您的名字是:", name)print('请正对着摄像头...')# 加载训练好的模型文件。# 设置图片显示的字体。
·
# -*- coding: utf-8 -*- import cv2 names = ['0101','jiangjianan','0105','0105','0105'] # 人脸识别函数 def Face(train_name): global names # 初始化识别器 recognizer = cv2.face.LBPHFaceRecognizer_create() # 加载训练好的模型文件 #recognizer.read('./Model/trainer-2023.yml') recognizer.read('./Model/' + train_name + '.yml') # 获取分类器 faceCascade = cv2.CascadeClassifier(r'./cv2data/haarcascade_frontalface_default.xml') # 设置图片显示的字体 font = cv2.FONT_HERSHEY_SIMPLEX idnum = 0 # 用户需要在此添加场次号+座位号,下标序号要与名字对应(ID从0开始,依次递增) # names = ['0101','jiangjianan','0105'] # 捕获图像 camera = cv2.VideoCapture(0, cv2.CAP_DSHOW) # 设置格式 minW = 0.1*camera.get(3) minH = 0.1*camera.get(4) print('请正对着摄像头...') confidence = 150.00 name = "unknown" while True: # 读取图片 success,img = camera.read() # 图片灰度化 gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 检测人脸 faces = faceCascade.detectMultiScale( gray, scaleFactor=1.3, 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) # 图像预测 idnum, confidence = recognizer.predict(gray[y:y+h, x:x+w]) print(confidence) # 阈值为110(即匹配指数大于等于90即可验证通过人脸) if confidence < 110: name = names[idnum] else: name = "unknown" cv2.putText(img, str(name), (x+5, y-5), font, 1, (230, 250, 100), 1) cv2.putText(img, str(confidence), (x+5, y+h-5), font, 1, (255, 0, 0), 1) cv2.imshow('camera', img) # 保持画面持续 key = cv2.waitKey(10) # 按Esc键退出 if key==27 or confidence < 110: cv2.imwrite('./image.jpg', img) break # 关闭摄像头 camera.release() cv2.destroyAllWindows() return name,confidence if __name__ == '__main__': name,confidence = Face('2024_3') confidence = "{0}%".format(round(200 - confidence)) print("您的名字是:", name) print("匹配指数:", confidence)

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐
所有评论(0)