如何创建多个 VideoCapture 对象

How to create multiple VideoCapture Objects

我想创建多个 VideoCapture 对象来将来自多个摄像机的视频拼接成一个视频混搭。

例如:我有三个视频的路径,我想使用下面显示的视频捕获对象读取这些视频以从各个视频中获取帧,因此它们可用于写入。

预期:对于N个视频路径

   cap0=cv2.VideoCapture(path1)
   cap1=cv2.VideoCapture(path2)
   cap2=cv2.VideoCapture(path3)
   .
   . 
   capn=cv2.VideoCapture(path4)

同样,我也想创建框架对象来读取像

这样的框架
ret,frame0=cap0.read()
ret,frame1=cap1.read()
.
.
ret,frameN=capn.read()

我尝试在存储路径的列表上使用 for 循环,但每次只读取一个路径并为该特定视频存储帧 only.I 在许多论坛中看到可以创建多个在视频数量事先未知的动态场景中,用 C++ 捕获对象而不是 python 中的对象。 到目前为止,这是我的代码

frames=[]
for path in videoList:
    indices=[]
    cap = cv2.VideoCapture(path)

    while(cap.isOpened()):
        ret,frame=cap.read()
        if not ret:
           break
        indices.append(cap.get(1))
    frames.append(indices)
    cap.release()
    cv2.destroyAllWindows()

我不是 python 程序员,但解决方案可能类似于:

frames = []
caps = []
for path in videoList:
    caps.append(cv2.VideoCapture(path))

for cap in caps:
    while cap.isOpened():
        ret, frame = cap.read()
        if not ret:
            break
        frames.append(frame)

# now "frames" holds your captured images.