【发布时间】:2017-02-03 14:49:27
【问题描述】:
我想创建多个 VideoCapture 对象,用于将来自多个摄像头的视频拼接成一个视频混搭。
例如:我有三个视频的路径,我想使用下面显示的 Video Capture 对象读取这些视频,以从各个视频中获取帧,以便它们可以用于写入。
预期:对于 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 循环,但每次只读取一个路径并且仅为该特定视频存储帧。我在许多论坛中看到可以在 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不太了解,但可能是范围问题?因此,如果您在循环中本地创建 cv2.VideoCapture(pathN),如果您离开循环,它们可能会丢失?你应该分享你的代码来展示你到底做了什么。
-
在创建第二个之前,您只需创建一个 videocap 并无限循环...
标签: python opencv video video-capture video-processing