【发布时间】:2021-01-30 13:42:04
【问题描述】:
我正在尝试让这个 videocapture opencv2 python 脚本允许我从我的笔记本电脑摄像头和 USB 摄像头制作多个视频流,并且我成功(在 youtube 的帮助下)只在每次添加我必须编辑的相机时这样做代码行并添加另一个视频捕获行和另一个帧和另一个cv2.imshow。但是我想以一种允许我流式传输检测到的尽可能多的摄像头的方式编辑视频捕获代码,而无需在每次有摄像头使用循环时添加一行。我显然是新来的,所以如果解决方案太简单,请接受我的歉意。
这是允许我流式传输多个摄像头但为每个摄像头添加一行的代码。
import urllib.request
import time
import numpy as np
import cv2
# Defining URL for camera
video_capture_0 = cv2.VideoCapture(0)
video_capture_1 = cv2.VideoCapture(1)
while True:
# Capture frame-by-frame
ret0, frame0 = video_capture_0.read()
ret1, frame1 = video_capture_1.read()
if (ret0):
# Display the resulting frame
cv2.imshow('Cam 0', frame0)
if (ret1):
# Display the resulting frame
cv2.imshow('Cam 1', frame1)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# When everything is done, release the capture
video_capture_0.release()
video_capture_1.release()
cv2.destroyAllWindows()
我尝试创建一个列表camlist = [i for i in range(100)],然后将其添加到不断将其添加到视频捕获的 for 循环中。但我认为那是一团糟,所以我删除了似乎不太有效的代码。
【问题讨论】:
-
要做到这一点,看来还需要其他工具。如果只想使用 python 和 opencv,则必须始终循环控制摄像机,这不是一个好方法(此循环可以是线程)。如果您确实需要这样做,您应该使用新工具在免费中同步检查相机连接。
-
您应该使用
list来保留摄像头,然后您可以使用for-loop 来处理所有摄像头。您应该将ret,frame添加到列表中,以便稍后您可以使用另一个for-loop 来处理所有结果。最后你可以使用for-loop torelease()所有相机。然后您可以将新相机添加到列表中,而无需更改代码。
标签: python numpy loops opencv video-streaming