首页 > 解决方案 > 使用 OpenCv 读取的视频帧数不一致

问题描述

我正在尝试从以下视频中提取帧(披露:我不是视频的所有者,视频取自公共数据集)。要获得我做的视频帧数:

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

要提取帧,我有这种方法:

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

最后,我计算提取的视频帧数:

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

与 相比,我得到一个不一致的数字cv2.CAP_PROP_FRAME_COUNT

我也知道这个 SO 问题,但是,当我显示视频时,我可以全部看完,但我无法阅读所有帧。

欢迎任何指针/方向。

标签: pythonopencvopencv-python

解决方案


推荐阅读