From a2252e512c3b68d79e8f6336e68338feed5a03a7 Mon Sep 17 00:00:00 2001 From: Heyuxuan <1071816265@qq.com> Date: Sun, 2 Jun 2024 20:17:54 +0800 Subject: [PATCH] 0602 --- 10人脸识别.py | 92 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 10人脸识别.py diff --git a/10人脸识别.py b/10人脸识别.py new file mode 100644 index 0000000..e45ba28 --- /dev/null +++ b/10人脸识别.py @@ -0,0 +1,92 @@ +import cv2 +import os +import urllib +import urllib.request + +#加载训练数据集文件 +recoginzer=cv2.face.LBPHFaceRecognizer.create() +#加载数据 +recoginzer.read('trainer/trainer.yml') +#名称 +names=[] +#警报全局变量 +warningtime = 0 + +#md5加密 +def md5(str): + import hashlib + m = hashlib.md5() + m.update(str.encode('utf-8')) + return m.hexdigest() + +#短信反馈 +statuStr = { + '0': '短信发送成功', + '-1': '参数不齐', + '-2': '服务器空间不支持,请确认支持curl或者fsocket,联系您的空间商解决或者更换空间', + '30': '密码错误', + '40': '账号不存在', + '41': '余额不足', + '42': '账户已过期', + '43': 'IP地址限制', + '50': '内容含有敏感词' +} + +#报警模块 +def warning(): + smsapi = "http://api.smsbao,com/" + #短信平台账号 + user = '198****0992' + #短信平台密码 + password = md5('********') + #要发送短信的内容 + content = '【报警】\n原因:xxx\n地点:xxx\n时间:xxx' + #要发送短信的手机号码 + phone = '198****0992' + + data = urllib.parse.urlencode({'u':user,'p':password,'m':phone,'c':content}) + send_url = smsapi + 'sms?' + data + response = urllib.request.urlopen(send_url) + the_page = response.read().decode('utf-8') + print(statuStr[the_page]) + +#准备识别的图片 +def face_detect_demo(img): + gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) #转换为灰度图片 + face_detector = cv2.CascadeClassifier('D:/PyCharm 2024.1.1/opencv/sources/data/haarcascades/haarcascade_frontalface_alt2.xml') + face=face_detector.detectMultiScale(gray, 1.1,5,cv2.CASCADE_SCALE_IMAGE,(50,50),(300,300)) + #face=face_detector.detectMultiScale(gray) + for (x,y,w,h) in face: + cv2.rectangle(img,(x,y),(x+w,y+h),(0,0,255),2) + cv2.circle(img,(x+w//2,y+h//2),w//2,(0,255,0),1) + #人脸识别 + ids, confidence = recoginzer.predict(gray[y:y+h,x:x+w]) + #print('标签id:',ids,'置信评分:',confidence) + if confidence>80: + global warningtime + warningtime+=1 + if warningtime>100: + warning() + warningtime=0 + cv2.putText(img,'unkonw',(x+10,y-10),cv2.FONT_HERSHEY_SIMPLEX,0.75,(0,255,0),1) + else: + cv2.putText(img,str(names[ids-1]),(x+10,y-10),cv2.FONT_HERSHEY_SIMPLEX,0.75,(0,255,0),1) + cv2.imshow('result',img) + #print('bug',ids) + +#名字标签 +def name(): + 111 + +#加载视频 +cap=cv2.VideoCapture('pic/1.mp4')#cap=cv2.VideoCapture(0) +name() +while True: + flag,frame=cap.read() + if not flag: + break + face_detect_demo(frame) + if ord(' ') == cv2.waitKey(10): + break +cv2.destroyAllWindows() +cap.release() \ No newline at end of file