java中的接口是类吗
310
2022-11-05
基于OpenCV的人脸口罩识别检测详细教程
背景介绍
从19年疫情爆发到现在,佩戴口罩对大家来说已是常态。应运而生的就有了很多相关应用,如病毒发展预测、口罩佩戴检测以及戴口罩的人脸识别等。
今天介绍的人脸口罩佩戴检测系统主要使用OpenCV和百度飞浆(PaddlePaddle)的PaddleHub提供的检测模型。PaddleHub提供了很多实用的模型,包括图像处理、文字处理、音频处理、视频处理和工业应用等。github地址:paddle失败,大家根据报错信息搜索解决方法即可。
【2】图片人脸口罩检测
准备待测图,运行下面代码,修改图片路径即可:
import paddlehub as hubimport cv2 mask_detector = hub.Module(name="pyramidbox_lite_server_mask")img_path = './imgs/A0.png'img = cv2.imread(img_path) input_dict = {"data": [img]}result = mask_detector.face_detection(data=input_dict) count = len(result[0]['data'])if count < 1: print('There is no face detected!')else: for i in range(0,count): #print(result[0]['data'][i]) label = result[0]['data'][i].get('label') score = float(result[0]['data'][i].get('confidence')) x1 = int(result[0]['data'][i].get('left')) y1 = int(result[0]['data'][i].get('top')) x2 = int(result[0]['data'][i].get('right')) y2 = int(result[0]['data'][i].get('bottom')) cv2.rectangle(img,(x1,y1),(x2,y2),(255,200,0),2) if label == 'NO MASK': cv2.putText(img,label,(x1,y1),0,0.8,(0,0,255),2) else: cv2.putText(img,label,(x1,y1),0,0.8,(0,255,0),2) cv2.imwrite('result.jpg',img)cv2.imshow('mask-detection', img)cv2.waitKey()cv2.destroyAllWindows()print('Done!')
代码开始第一次会先下载对应的模型到如下位置:
C:\Users\xxx\.paddlehub\modules,以后不用再下载
运行结果:
【3】视频或摄像头实时人脸口罩检测
准备测试视频或直接打开摄像头检测,选择对应的代码即可:
import paddlehub as hubimport cv2 mask_detector = hub.Module(name="pyramidbox_lite_server_mask") def mask_detecion(img): input_dict = {"data": [img]} result = mask_detector.face_detection(data=input_dict) count = len(result[0]['data']) if count < 1: #print('There is no face detected!') pass else: for i in range(0,count): #print(result[0]['data'][i]) label = result[0]['data'][i].get('label') score = float(result[0]['data'][i].get('confidence')) x1 = int(result[0]['data'][i].get('left')) y1 = int(result[0]['data'][i].get('top')) x2 = int(result[0]['data'][i].get('right')) y2 = int(result[0]['data'][i].get('bottom')) cv2.rectangle(img,(x1,y1),(x2,y2),(255,200,0),2) if label == 'NO MASK': cv2.putText(img,label,(x1,y1),0,0.8,(0,0,255),2) else: cv2.putText(img,label,(x1,y1),0,0.8,(0,255,0),2) return img if __name__ == '__main__': cap = cv2.VideoCapture('2.mp4') #视频文件检测 #cap = cv2.VideoCapture(0) #摄像头检测 if(cap.isOpened()): #视频打开成功 while(True): ret,frame = cap.read()#读取一帧 result = mask_detecion(frame) cv2.imshow('mask_detection',result) if cv2.waitKey(1)&0xFF ==27: #按下Esc键退出 break else: print ('open video/camera failed!') cap.release() cv2.destroyAllWindows()
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~