Inconsistent number of read video frames with OpenCv

Viewed 193

I'm trying to extract the frames from the following video (Disclosure: I'm not the owner of the video, the video is taken from a public dataset). To get the number of video frames I do:

cap = cv2.VideoCapture(video_path)
cap.get(cv2.CAP_PROP_FRAME_COUNT) # This returns 32

To extract the frames I have this method:

def obtain_frames(video_path: str):
    cap = cv2.VideoCapture(video_path)
    frames = []
    while True:
        success, image = cap.read()
        if not success:
            break
        frames.append(image)
    return frames

Finally, I count the number of extracted video frames with:

frames = obtain_frames(video_path)
len(frames) # This returns 17

and I get an inconsistent number compared to cv2.CAP_PROP_FRAME_COUNT.

I'm also aware of this SO question but still, when I display the video I can go all through the end and yet I can't read all the frames.

Any pointers/directions are welcome.

0 Answers
Related