OpenCV中的人脸识别通常使用 Haar 特征和 LBP 特征。这里我将解释如何使用 Haar 特征进行特征提取。
Haar 特征是一种基于图像像素值变化的快速特征检测方法,可以用于识别人脸等物体。在 OpenCV 中,可以使用 Haar 特征分类器来检测人脸。
以下是使用 OpenCV 进行 Haar 特征提取的步骤:
- 加载 OpenCV 库并读取图像。
import cv2 img = cv2.imread('image.jpg')
- 将图像转换为灰度图像。
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
- 使用 Haar 特征分类器加载预训练模型。OpenCV 提供了多种预训练的 Haar 特征分类器模型,可以直接使用。
face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')
- 对灰度图像进行人脸检测。
faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30))
- 对于每个检测到的人脸,提取其 Haar 特征。
for (x, y, w, h) in faces: roi = gray[y:y+h, x:x+w] features = face_cascade.compute(roi) # 使用 features 进行后续处理,例如分类或识别
在上面的代码中,face_cascade.compute(roi)
返回一个包含人脸 Haar 特征的矩阵,可以用于后续的分类或识别操作。