我正在尝试附加一个列表,其中包含从多个视频文件中读取的帧列表。我有三个视频文件,使用VideoCapture类我正在读取循环中的所有三个文件并尝试将读取插入列表。最后,我想要一个从文件中读取的帧列表。 例如:
来自file1.avi的帧:[1,2,3,4,5,6]
来自file2.avi的帧:[1,2,3,4,5,6,7,8,9]
来自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:\Users\chaitanya\Desktop\Thesis\*.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()
答案 0 :(得分:1)
我希望输出为:[[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:\Users\chaitanya\Desktop\Thesis\*.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)
输出扩展我的答案。