python对视频进行人脸跟踪并输出新视频
时间: 2023-08-05 09:09:57 浏览: 75
可以使用OpenCV库来对视频进行人脸跟踪并输出新视频。下面是一个基本的实现示例:
```python
import cv2
# 加载人脸检测器
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
# 打开视频
video_capture = cv2.VideoCapture('input_video.mp4')
# 获取视频帧率和尺寸
fps = int(video_capture.get(cv2.CAP_PROP_FPS))
width = int(video_capture.get(cv2.CAP_PROP_FRAME_WIDTH))
height = int(video_capture.get(cv2.CAP_PROP_FRAME_HEIGHT))
# 创建视频写入器
fourcc = cv2.VideoWriter_fourcc(*'mp4v')
video_writer = cv2.VideoWriter('output_video.mp4', fourcc, fps, (width, height))
# 循环读取视频帧
while video_capture.isOpened():
ret, frame = video_capture.read()
if ret:
# 将帧转换为灰度图像
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
# 检测人脸
faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30))
# 绘制人脸框并保存输出视频
for (x, y, w, h) in faces:
cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 2)
video_writer.write(frame)
# 显示视频帧
cv2.imshow('Video', frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
else:
break
# 释放资源
video_capture.release()
video_writer.release()
cv2.destroyAllWindows()
```
在这个示例中,我们首先加载了一个人脸检测器,然后打开输入视频并获取其帧率和尺寸。接下来,我们使用一个循环来读取视频的每一帧,将每一帧转换为灰度图像并使用人脸检测器检测人脸。对于每个检测到的人脸,我们绘制一个矩形框并将帧写入输出视频。最后,我们释放资源并关闭所有窗口。
请注意,上述示例只是一个基本实现,您可以根据需要进行更改和优化。