怎么用“haarcascade_frontalface_default.xml”的预训练分类器来检测图像中的人脸
时间: 2023-08-06 15:10:23 浏览: 136
使用OpenCV库可以很方便地实现基于Haar Cascades的人脸检测。以下是一个Python示例代码,演示如何使用“haarcascade_frontalface_default.xml”分类器来检测图像中的人脸:
```python
import cv2
# 加载分类器
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
# 读取图像
img = cv2.imread('test.jpg')
# 转换为灰度图像
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 检测人脸
faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5)
# 绘制人脸框
for (x, y, w, h) in faces:
cv2.rectangle(img, (x, y), (x + w, y + h), (0, 255, 0), 2)
# 显示结果
cv2.imshow('img', img)
cv2.waitKey()
```
在上面的代码中,我们首先加载了“haarcascade_frontalface_default.xml”分类器,并读取了一张测试图像。然后我们将图像转换为灰度图像,因为在灰度图像中进行人脸检测更加准确。接着,我们调用detectMultiScale函数来检测人脸。该函数返回一个由人脸坐标组成的列表。最后,我们遍历人脸列表并在图像中绘制矩形框来表示检测到的人脸。最后,我们使用OpenCV的imshow函数将结果显示出来。
需要注意的是,detectMultiScale函数有两个重要的参数:scaleFactor和minNeighbors。scaleFactor控制图像缩放比例,minNeighbors控制人脸检测器在多少个相邻矩形框内检测到人脸才认为该矩形框中存在人脸。这些参数的值需要根据具体情况进行调整。
阅读全文