📜  使用 OpenCV-Python 的 Cascade Classifier 进行人脸检测(1)

📅  最后修改于: 2023-12-03 15:36:32.704000             🧑  作者: Mango

使用 OpenCV-Python 的 Cascade Classifier 进行人脸检测

简介

OpenCV-Python 是一个基于 OpenCV(开源计算机视觉库)的 Python 库,包含了许多用于图像处理的有用工具和函数。 Cascade Classifier 是 OpenCV 中的一个框架,用于检测人脸、车牌等目标,数据存储在 .xml 文件中。

在本文中,我们将介绍如何使用 OpenCV-Python 的 Cascade Classifier 进行人脸检测。

安装

首先,我们需要安装 OpenCV-Python。可以使用 pip 命令来安装:

pip install opencv-python
导入库

接下来,我们需要导入 OpenCV 库和 Matplotlib 库(用于显示图像)。

import cv2
from matplotlib import pyplot as plt
加载分类器

现在,我们需要从 OpenCV 的 Github 仓库中下载一个分类器 XML 文件,该文件存储有关人脸检测的算法和其他相关数据。

face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
加载图像

接下来,我们要加载待检测目标的图像。我们可以使用 cv2.imread 函数加载图像,并将其显示出来。

img = cv2.imread('test.jpg')
plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
plt.show()

图片

灰度转换

灰度图像比彩色图像计算量小。因此,我们将图像转换为灰度图像。

gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
plt.imshow(gray, cmap='gray')
plt.show()

图片

检测人脸

我们将使用 detectMultiScale 函数来检测图像中的人脸,这个函数将返回人脸的坐标、大小、宽度和高度等信息。

faces = face_cascade.detectMultiScale(gray, 1.3, 5)
绘制边框

最后,我们要在检测到的每个人脸周围绘制一个矩形边框,并将结果显示出来。

for (x, y, w, h) in faces:
    cv2.rectangle(img, (x, y), (x + w, y + h), (0, 255, 0), 2)
    
plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
plt.show()

图片

这就是使用 OpenCV-Python 的 Cascade Classifier 进行人脸检测的完整过程。