繁体   English   中英

opencv 视频捕获和读取不会检索所有帧。 返回不正确的帧数

[英]opencv videocapture and read doesnt retrieve all frames. Returns incorrect number of frames

我有一个 29 分钟长的 mp4 视频,分辨率为 1536x2304。 我正在尝试做的是创建一个数据加载器,它摄取 mp4 文件并提供给 CNN,但为此我需要使用 opencv 来检索帧。 当我使用 cap = cv.VideoCapture("mp4 file") 和 ret, frame = cap.read() 时,我只收到大约 40 帧。

由于视频长度为 29 分钟,并且为 18fps,因此我期望的帧数约为 31320 帧,但我只得到 40 帧。真的很困惑,感谢任何帮助!

当您指定使用行ret, frame = cap.read()来计算帧数时,我会假设您正在使用带有 when to break条件的while循环。

您是否考虑过由于与VideoCapture object 中的帧数无关的问题, while循环可能已经结束? 或者,您可能已经多次调用cap.read()方法,每次递增到用于计算帧数的变量。

使用 OpenCV 获取视频中帧数的正确方法是:

import cv2 as cv

cap = cv.VideoCapture("file.mp4")
count = cap.get(cv2.CAP_PROP_FRAME_COUNT)

print(count)

(注意:如果您得到 output 0 ,则可能找不到指定的文件名,需要更正。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM