opencv dnn 实现人脸检测
时间: 2023-07-07 12:36:32 浏览: 73
OpenCV DNN 模块可以使用深度学习模型实现人脸检测。以下是一个简单的 Python 示例代码:
```python
import cv2
# 加载模型和配置文件
model = cv2.dnn.readNetFromCaffe('deploy.prototxt', 'res10_300x300_ssd_iter_140000.caffemodel')
# 读取图像
img = cv2.imread('test.jpg')
# 创建 blob
blob = cv2.dnn.blobFromImage(cv2.resize(img, (300, 300)), 1.0, (300, 300), (104.0, 177.0, 123.0))
# 进行人脸检测
model.setInput(blob)
detections = model.forward()
# 绘制人脸矩形框
for i in range(0, detections.shape[2]):
confidence = detections[0, 0, i, 2]
if confidence > 0.5:
box = detections[0, 0, i, 3:7] * np.array([img.shape[1], img.shape[0], img.shape[1], img.shape[0]])
(x, y, w, h) = box.astype("int")
cv2.rectangle(img, (x, y), (w, h), (0, 255, 0), 2)
# 显示结果
cv2.imshow('img', img)
cv2.waitKey()
cv2.destroyAllWindows()
```
在示例代码中,我们首先加载了深度学习模型和配置文件。然后读取了一张测试图像,并创建了一个 blob。使用 `setInput()` 函数将 blob 输入到模型中进行人脸检测。最后,用矩形框标记检测到的人脸,显示结果图像。
需要注意的是,这里使用的是基于 Single Shot Detector (SSD) 的人脸检测器,可以检测出多个人脸。如果需要检测出单个人脸,可以根据置信度选取最大的人脸框。