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

时间:2015-02-13 06:45:48

标签: python opencv

我正在尝试计算视频文件中的帧总数('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)给出总帧数。显然get(7)在上述情况下是不正确的。因此,要验证我是否尝试在.avi文件中找到这些值。

>>> cap = cv2.VideoCapture('foo.avi')
>>> cap.get(5)
29.97002997002997
>>> cap.get(7)
256379.0

我可以通过将FPS乘以视频的持续时间来计算总帧数,但我不确定.h264的FPS是否正确。为什么它给出了总帧数的负数?这是一个错误吗?
P.S:我使用覆盆子pi相机录制了这个视频文件(.h264)。

1 个答案:

答案 0 :(得分:1)

事实证明,OpenCV不支持h.264格式(Link)。但是,Python OpenCV documentation上的视频捕获文档提到了get命令的整数参数。所以,你正确使用5和7代替'CV_CAP_PROP_FRAME_COUNT'。您可以尝试将覆盆子pi上的捕获格式更改为avi。