opencv的VideoCapture怎么捕获全部摄像头
时间: 2024-03-05 08:53:06 浏览: 125
如果你的电脑上有多个摄像头,想要同时捕获他们的图像,可以使用以下代码:
```python
import cv2
# 获取所有摄像头列表
camera_indexes = list(range(4)) # 假设有4个摄像头
# 打开所有摄像头
capture_objects = [cv2.VideoCapture(index) for index in camera_indexes]
# 检查是否成功打开所有摄像头
for i, cap in enumerate(capture_objects):
if not cap.isOpened():
print(f"无法打开摄像头 {i}")
# 读取每一帧图像
while True:
frames = []
for cap in capture_objects:
ret, frame = cap.read()
if not ret:
break
frames.append(frame)
# 检查是否成功读取所有摄像头的图像
if len(frames) != len(capture_objects):
break
# 按顺序显示所有摄像头的图像
for i, frame in enumerate(frames):
cv2.imshow(f"摄像头 {i}", frame)
# 等待按下 'q' 键退出
if cv2.waitKey(1) == ord("q"):
break
# 释放所有摄像头
for cap in capture_objects:
cap.release()
# 关闭所有窗口
cv2.destroyAllWindows()
```
首先,使用`list(range(4))`获取所有摄像头的编号列表。然后,打开所有摄像头,并检查是否成功打开。接着,读取每一帧图像,将其存储在一个列表中。如果成功读取所有摄像头的图像,就按顺序显示它们。最后,要记得释放所有摄像头并关闭所有窗口。
阅读全文