将多个视频文件中的抓取帧附加到列表列表中

时间:2016-08-20 15:31:07

标签: python list opencv

我正在尝试附加一个列表,其中包含从多个视频文件中读取的帧列表。我有三个视频文件,使用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()

1 个答案:

答案 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)输出扩展我的答案。