Python 语言 用 OpenCV 实现人脸检测 标注矩形框 + 人数统计

Python阿木 发布于 13 小时前 1 次阅读


使用OpenCV实现人脸检测、标注矩形框及人数统计

人脸检测是计算机视觉领域的一个重要研究方向,广泛应用于安防监控、人脸识别、人机交互等领域。OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉库,提供了丰富的人脸检测功能。本文将使用OpenCV实现人脸检测,并对检测到的人脸进行标注矩形框和人数统计。

环境准备

在开始编写代码之前,请确保已经安装了以下软件和库:

1. Python 3.x
2. OpenCV 4.x
3. NumPy

安装OpenCV和NumPy的命令如下:

bash
pip install opencv-python
pip install numpy

人脸检测原理

人脸检测的基本原理是利用机器学习算法从图像中识别出人脸。OpenCV提供了Haar特征分类器,这是一种基于机器学习的人脸检测算法。该算法通过训练大量的正面人脸和负样本图像,学习出人脸的特征,从而实现人脸检测。

代码实现

以下是一个使用OpenCV实现人脸检测、标注矩形框及人数统计的示例代码:

python
import cv2
import numpy as np

加载Haar级联分类器
face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')

读取图像
image = cv2.imread('example.jpg')

转换为灰度图像
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

检测人脸
faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30))

统计人数
face_count = len(faces)

标注矩形框
for (x, y, w, h) in faces:
cv2.rectangle(image, (x, y), (x+w, y+h), (255, 0, 0), 2)

显示结果
cv2.imshow('Face Detection', image)
cv2.waitKey(0)
cv2.destroyAllWindows()

输出人数统计
print(f"Number of faces detected: {face_count}")

代码解析

1. 我们加载了Haar级联分类器,该分类器是OpenCV提供的人脸检测算法。
2. 然后,我们读取了一个名为`example.jpg`的图像文件。
3. 接下来,我们将图像转换为灰度图像,因为人脸检测算法通常在灰度图像上运行。
4. 使用`detectMultiScale`函数检测图像中的人脸。该函数返回一个包含人脸位置的列表。
5. 统计检测到的人脸数量。
6. 遍历人脸列表,使用`rectangle`函数在图像上绘制矩形框。
7. 显示检测结果。
8. 输出检测到的人脸数量。

总结

本文介绍了使用OpenCV实现人脸检测、标注矩形框及人数统计的方法。通过加载Haar级联分类器,我们可以快速检测图像中的人脸,并使用矩形框进行标注。我们还可以统计检测到的人脸数量。在实际应用中,可以根据需求对代码进行修改和扩展,例如添加人脸识别、人脸跟踪等功能。