我正在尝试添加一个列表,其中包含从多个视频文件读取的帧列表。我有三个视频文件,使用videoccapture类,我在一个循环中读取所有三个文件,并试图将读取插入到列表中。最后,我想要一个从文件中读取的帧列表的列表。例如:
frames from file1.avi:[1,2,3,4,5,6]
frames from file2.avi:[1,2,3,4,5,6,7,8,9]
frames from file3。avi: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
我希望输出:[[1、2、3、4、5、6],[1,2,3,4,5,6,7,8,9],[1,2,3,4,5,6,7,8,9,10]]
我得到的输出为(1,2,3,4,5,6,1,2,3,4,5,6,7,8,9,1,2,3,4,5,6,7,8,9,10)
下面是我的代码
videoList=glob.glob(r'C:UserschaitanyaDesktopThesis*.avi')
indices=[]
for path in videoList:
cap = cv2.VideoCapture(path)
while(cap.isOpened()):
ret,frame=cap.read()
if not ret:
break
indices.append(cap.get(1))
cap.release()
cv2.destroyAllWindows()
我希望输出:[[1、2、3、4、5、6],[1,2,3,4,5,6,7,8,9],[1,2,3,4,5,6,7,8,9,10]]
您只有一个列表indices=[]
。如果你想要一个"框架列表的列表",你应该在for循环中扩展第二个列表:
videoList=glob.glob(r'C:UserschaitanyaDesktopThesis*.avi')
videoindices = []
for path in videoList:
cap = cv2.VideoCapture(path)
#second List
indices = []
while(cap.isOpened()):
ret,frame=cap.read()
if not ret:
break
# append the frames to the secound list
indices.append(cap.get(1))
cap.release()
# append the list of frames to the list
videoindices.append(indices)
print(videoindices)
代码未经过测试。我将稍后测试它,并通过print(videoindices)
输出扩展我的答案。