[英]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.