YOLOv3 是一种高效的目标检测算法,结合 OpenCV 可实现快速的人脸识别与定位。以下是使用 OpenCV 调用 YOLOv3 模型进行人脸检测的详细指南:
🧰 环境准备
- 安装 Python 3
Python_3 - 安装 OpenCV 库
OpenCV_4 - 下载 YOLOv3 模型文件(
yolov3.cfg
和yolov3.weights
)
YOLOv3_Model - 获取预训练的人脸类模型(如
coco.names
)
COCO_Names
📝 代码示例
import cv2
# 加载 YOLOv3 模型
net = cv2.dnn.readNet("yolov3.weights", "yolov3.cfg")
classes = open("coco.names").read().strip().split("\n")
# 读取图像并进行检测
image = cv2.imread("test.jpg")
blob = cv2.dnn.blobFromImage(image, 1/255, (416, 416), swapRB=True, crop=False)
net.setInput(blob)
layer_names = net.getUnconnectedOutLayersNames()
detections = net.forward(layer_names)
# 绘制检测框(简化逻辑)
for detection in detections:
for obj in detection:
if obj[5] > 0.5: # 置信度阈值
x1, y1, x2, y2 = int(obj[0]*image.shape[1]), int(obj[1]*image.shape[0]), int(obj[2]*image.shape[1]), int(obj[3]*image.shape[0])
cv2.rectangle(image, (x1, y1), (x2, y2), (0, 255, 0), 2)
cv2.putText(image, "Face", (x1, y1-10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 2)
cv2.imshow("Face Detection", image)
cv2.waitKey(0)
📌 运行结果
图片展示了 YOLOv3 在 OpenCV 中检测人脸的效果,框选区域为识别结果。
📚 扩展阅读
如需进一步优化检测精度或性能,可参考上述扩展链接进行深入学习!