用yolov5写一段人脸识别程序
时间: 2023-08-10 19:54:43 浏览: 45
好的,这里给您提供一个使用 YOLOv5 实现人脸识别的 Python 程序。该程序使用了YOLOv5模型对输入的图像进行目标检测,识别出图片中的人脸区域,并使用OpenCV库进行绘制和展示。
```python
import cv2
import torch
from yolov5 import YOLOv5
# 加载YOLOv5模型
model = YOLOv5(weights="yolov5s.pt", conf_thres=0.5, iou_thres=0.5)
# 加载人脸检测器(这里使用的是OpenCV自带的人脸检测器)
face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')
# 打开摄像头
cap = cv2.VideoCapture(0)
while True:
# 读取摄像头数据
ret, frame = cap.read()
# 对图像进行目标检测
results = model.detect(frame)
# 遍历检测结果,找到人脸区域
for result in results:
if result["class"] == "person":
# 使用人脸检测器检测人脸区域
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray, 1.3, 5)
for (x, y, w, h) in faces:
# 在图像中绘制人脸区域
cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 2)
# 展示图像
cv2.imshow("Face Detection", frame)
# 按下 Q 键退出程序
if cv2.waitKey(1) == ord('q'):
break
# 释放摄像头资源
cap.release()
# 关闭所有窗口
cv2.destroyAllWindows()
```
运行该程序后,程序会打开摄像头,并实时对摄像头输入的图像进行人脸识别。程序将检测到的人脸区域用矩形框标出,并在窗口中展示出来。您可以通过按下Q键来退出程序。
需要注意的是,该程序中使用的人脸检测器可能会存在一定的误检和漏检情况,您可以根据实际情况调整人脸检测器的参数或者使用更加准确的人脸检测器。