python同时打开两个摄像头并显示和按固定时长保存为视频文件
时间: 2024-03-11 09:49:26 浏览: 81
python+opencv打开摄像头,保存视频、拍照功能的实现方法
5星 · 资源好评率100%
你可以使用OpenCV库同时打开两个摄像头并显示,并且按固定时长将视频保存为文件。下面是示例代码:
```python
import cv2
import datetime
# 设置视频编码器和帧率
fourcc = cv2.VideoWriter_fourcc(*'XVID')
fps = 30.0
# 打开第一个摄像头
cap1 = cv2.VideoCapture(0)
# 获取第一个摄像头的宽度和高度
width1 = int(cap1.get(cv2.CAP_PROP_FRAME_WIDTH))
height1 = int(cap1.get(cv2.CAP_PROP_FRAME_HEIGHT))
# 创建第一个摄像头的视频写入器
out1 = cv2.VideoWriter('camera1.avi', fourcc, fps, (width1, height1))
# 打开第二个摄像头
cap2 = cv2.VideoCapture(1)
# 获取第二个摄像头的宽度和高度
width2 = int(cap2.get(cv2.CAP_PROP_FRAME_WIDTH))
height2 = int(cap2.get(cv2.CAP_PROP_FRAME_HEIGHT))
# 创建第二个摄像头的视频写入器
out2 = cv2.VideoWriter('camera2.avi', fourcc, fps, (width2, height2))
# 定义视频保存的时长(秒)
record_time = 10
# 计算视频保存的结束时间
end_time = datetime.datetime.now() + datetime.timedelta(seconds=record_time)
while True:
# 读取第一个摄像头的帧
ret1, frame1 = cap1.read()
# 读取第二个摄像头的帧
ret2, frame2 = cap2.read()
# 将第一个摄像头的帧写入视频
out1.write(frame1)
# 将第二个摄像头的帧写入视频
out2.write(frame2)
# 显示第一个摄像头的帧
cv2.imshow('Camera 1', frame1)
# 显示第二个摄像头的帧
cv2.imshow('Camera 2', frame2)
# 检查是否达到视频保存的结束时间
if datetime.datetime.now() >= end_time:
break
# 按下 q 键退出循环
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# 释放摄像头、释放视频写入器并关闭窗口
cap1.release()
cap2.release()
out1.release()
out2.release()
cv2.destroyAllWindows()
```
这段代码和之前的代码类似,不同之处在于增加了计时器和结束时间的计算,并在达到结束时间后退出循环。按下 q 键可提前退出循环并关闭窗口。
阅读全文