前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >五分钟快速搭建一个实时人脸口罩检测系统(OpenCV+PaddleHub 含源码)

五分钟快速搭建一个实时人脸口罩检测系统(OpenCV+PaddleHub 含源码)

作者头像
Color Space
发布2022-09-26 10:11:30
6020
发布2022-09-26 10:11:30
举报

导读

本文主要介绍如何使用OpenCV和PaddleHub实现一个实时人脸口罩检测系统。(公众号:OpenCV与AI深度学习)

背景介绍 从19年疫情爆发到现在,佩戴口罩对大家来说已是常态。应运而生的就有了很多相关应用,如病毒发展预测、口罩佩戴检测以及戴口罩的人脸识别等。 今天介绍的人脸口罩佩戴检测系统主要使用OpenCV和百度飞浆(PaddlePaddle)的PaddleHub提供的检测模型。PaddleHub提供了很多实用的模型,包括图像处理、文字处理、音频处理、视频处理和工业应用等。github地址:https://github.com/PaddlePaddle/PaddleHub

人脸口罩检测 人脸检测部分的模型如下:

红框内的两个模型支持人脸口罩检测,这里选择pyramidbox_lite_server_mask,实现详细步骤: 【1】安装PaddlePaddle、PaddleHub和OpenCV(opencv-python) pip install paddlepaddle -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host https://pypi.tuna.tsinghua.edu.cn pip install paddlehub -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host https://pypi.tuna.tsinghua.edu.cn pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host https://pypi.tuna.tsinghua.edu.cn 本文使用的版本: PaddlePaddle---2.3.0 PaddleHun---2.2.0 opencv-python---4.6.0.66 注意:安装PaddlePaddle可能会遇到一些问题,导致import paddle失败,大家根据报错信息搜索解决方法即可。

【2】图片人脸口罩检测

准备待测图,运行下面代码,修改图片路径即可:

代码语言:javascript
复制
import paddlehub as hub
import 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,以后不用再下载

测试图1:

运行结果:

测试图2:

运行结果:

测试图3:

运行结果:

测试图4:

运行结果:

从上面测试结果来看,效果还不错!

【3】视频或摄像头实时人脸口罩检测

准备测试视频或直接打开摄像头检测,选择对应的代码即可:

代码语言:javascript
复制
cap = cv2.VideoCapture('2.mp4') #视频文件检测
# cap = cv2.VideoCapture(0) #摄像头检测

完整代码:‍

代码语言:javascript
复制
import paddlehub as hub
import 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()

测试结果:

—THE END—

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-06-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 OpenCV与AI深度学习 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景介绍 从19年疫情爆发到现在,佩戴口罩对大家来说已是常态。应运而生的就有了很多相关应用,如病毒发展预测、口罩佩戴检测以及戴口罩的人脸识别等。 今天介绍的人脸口罩佩戴检测系统主要使用OpenCV和百度飞浆(PaddlePaddle)的PaddleHub提供的检测模型。PaddleHub提供了很多实用的模型,包括图像处理、文字处理、音频处理、视频处理和工业应用等。github地址:https://github.com/PaddlePaddle/PaddleHub
  • 人脸口罩检测 人脸检测部分的模型如下:
  • —THE END—
相关产品与服务
人脸识别
腾讯云神图·人脸识别(Face Recognition)基于腾讯优图强大的面部分析技术,提供包括人脸检测与分析、比对、搜索、验证、五官定位、活体检测等多种功能,为开发者和企业提供高性能高可用的人脸识别服务。 可应用于在线娱乐、在线身份认证等多种应用场景,充分满足各行业客户的人脸属性识别及用户身份确认等需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档