Skip to content
Advertisement

How to save video as frames in list and process the list of frames simultaneously?

I want to read input from camera and append frame in a list, display the frame from list. The code takes much time to read a frame and display it, after appending into the list.

def test(source_file):
    ImagesSequence=[]
    i=0
    capture = VideoCapture(source_file)
    while(1):
        ret, frame = capture.read()
        while(True):
            imshow('Input', frame)

            ImagesSequence.append(frame)
            imshow('Output',ImagesSequence[i].astype(np.uint8))
            i=i+1
        if cv2.waitKey(60) & 0xFF == ord('q'):
            break
    return ImagesSequence

test(0)

Advertisement

Answer

As Christoph pointed out, you have an actual infinite loop running in the program, removing it will fix your program.

def test(source_file):
    ImagesSequence=[]
    i=0
    capture = cv2.VideoCapture(source_file)

    while True:
        ret, frame = capture.read()
        cv2.imshow('Input', frame)
        ImagesSequence.append(frame)
        cv2.imshow('Output',ImagesSequence[i].astype(np.uint8))

        i=i+1
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break
    return ImagesSequence

test(0)
User contributions licensed under: CC BY-SA
4 People found this is helpful
Advertisement