“口罩检测系统:结合openmv和stm32技术实现”
原理介绍:
(1) 使用OpenCV DNN网络检测人脸
(2) 通过HSV阈值提取肤色
(3) 通过肤色轮廓面积与人脸ROI面积比值判断是否佩戴口罩。
使用背景:
配戴口罩成为防控疫情保护自己的必需措施。不佩戴口罩严禁进入小区、学校、工厂,严禁乘坐公交、地铁等交通工具。但随着近日来,疫情逐渐好转,可能会有一部分降低了对新冠疫情的警惕性,不佩戴口罩出入公众场所,对此我们设计了一个口罩识别系统,把口罩识别问题当做一个分类问题,去检测人脸是否佩戴口罩。
设备组成:
STM32C8T6最小系统板、OpenMV4 H7 Plus高清智能摄像头、0.96寸OLED显示屏、对射式红外传感器、云台、SG90舵机、稳压电源模块、有源蜂鸣器模块
应用场所:
小区、学校、工厂,公交站、地铁站、图书馆、商场等人员密集场所,人员流动量大的地点。
设备配置:
将摄像头前段置于可照射人脸的范围内,对射式红外传感器置于通道或门栏侧用于监测通过人数,将OLED显示屏与有源蜂鸣器模块置于合适位置用于显示通过人数与未佩戴口罩人数并提醒警报。
优势展现:
(1) 使用OpenCV Haar分类器检测人脸,例如使用自带的haarcascade_frontalface_alt.xml不能适应光线暗的情况和人脸遮挡情况,佩戴了口罩无法检测到人脸,无法继续进行后面步骤
(2) 使用Dlib检测人脸,例如使用自带的shape_predictor_5_face_landmarks.dat不能适应人脸遮挡情况,佩戴了口罩无法检测到人脸,无法继续进行后面步骤
(3) 使用OpenCV DNN网络检测人脸,使用自带的opencv_face_detector_uint8.pb能适应部分人脸遮挡和侧脸情况,能继续进行后续检测。
当摄像头中检测到人脸时会使用舵机转动,使得openmv正对人脸,分析是否戴口罩,当没有带口罩会发出警报。
该工程所需代码和模型都在:https://github.com/SingTown/mask-tflite 中文步骤:https://github.com/SingTown/mask-tflite/blob/main/README_CN.md 非常简单