使用OpenCV计算视频文件中的帧数?

2024-05-03 04:11:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在计算视频文件('foo.h264')中的总帧数。在

>>> import numpy as nm
>>> import cv2
>>> cap = cv2.VideoCapture('foo.h264')
>>> cap.get(CV_CAP_PROP_FRAME_COUNT)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'CV_CAP_PROP_FRAME_COUNT' is not defined
>>> cap.get(5)
25.0
>>> cap.get(7)
-192153584101141.0

所以我认为get(5)给出了帧速率,get(7)给出了总帧数。显然在上面的例子中{}是不正确的。为了验证,我试图在.avi文件中找到这些值。在

^{pr2}$

我可以通过将FPS乘以视频的持续时间来计算总帧数,但我不确定为.h264指定的FPS是否正确。为什么总帧数是负数?这是虫子吗?
P、 S:我用树莓皮相机录制了这个视频文件(.h264)。在


Tags: importnumpygetfoocountcv2framecv
2条回答

另一个解决方案是使用imageio,它适用于一些视频。在

import imageio
filename="person15_walking_d1_uncomp.avi"
vid = imageio.get_reader(filename,  'ffmpeg')
# number of frames in video
num_frames=vid._meta['nframes']

事实证明OpenCV不支持h.264格式(Link)。但是,在Python OpenCV documentation的视频捕获文档中提到了get命令的一个整型参数。所以,你的计数是正确的,用5和7代替“CV_CAP_PROP_FRAME_count”。你可以试着把树莓派的捕获格式改成avi格式。在

相关问题 更多 >