要使用 OpenCV 实现口罩检测,通常可以使用基于机器学习的方法或深度学习方法。以下是一个基于机器学习的简单示例,利用 Haar 级联分类器来检测人脸,然后应用口罩分类器来判断是否戴口罩。
首先,确保你已经安装了 OpenCV 库。然后,你需要准备两个 Haar 级联分类器模型文件,一个用于人脸检测,另一个用于口罩检测。这些模型文件通常可以在网络上找到,比如 OpenCV 官方文档中提供了一些模型文件:OpenCV Haarcascades。
假设你已经有了 haarcascade_frontalface_default.xml
(用于人脸检测)和 mask_classifier.xml
(用于口罩检测)模型文件。
接下来是一个示例代码,展示了如何使用这两个模型文件来进行口罩检测:
import cv2
# 加载人脸检测器和口罩检测器
face_cascade = cv2.CascadeClassifier('path_to_haarcascade_frontalface_default.xml') # 替换为你的人脸检测模型文件路径
mask_cascade = cv2.CascadeClassifier('path_to_mask_classifier.xml') # 替换为你的口罩检测模型文件路径
# 读取图像
image_path = 'path_to_your_image.jpg' # 替换为你的图像文件路径
image = cv2.imread(image_path)
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# 人脸检测
faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30))
# 对每个检测到的人脸区域进行口罩检测
for (x, y, w, h) in faces:
roi_gray = gray[y:y+h, x:x+w]
roi_color = image[y:y+h, x:x+w]
# 在人脸区域应用口罩检测器
masks = mask_cascade.detectMultiScale(roi_gray)
# 如果检测到口罩,则绘制矩形框和文本
if len(masks) > 0:
for (mx, my