OpenCV的帧数始终为0

时间:2017-01-13 20:50:21

标签: python opencv

我是OpenCV的新手,在阅读了很多帖子之后,我想出了如何使用以下代码获取视频中的帧数。我的所有视频大约每个30秒。但是,OpenCV的帧计数方法总是返回0.我不知道为什么。我的视频类型是.mp4。有人可以帮我这个吗?

我尝试对不同长度的视频使用相同的代码。在所有这些情况下,它将0作为帧数打印。

我的OpenCV版本是2.4.11

以下是代码段。

import cv2
cap = cv2.VideoCapture("video.mp4")
length = int(cap.get(cv2.cv.CV_CAP_PROP_FRAME_COUNT))
print( length )

谢谢!

1 个答案:

答案 0 :(得分:1)

我在版本2.4.11中遇到了同样的困境(处理总帧数时)并升级为提交ID 0e436c3fe9e9c30c23a54449be44b2618aec1cb1,当时的头部 - 2016年6月24日。您还可以尝试更新版本的opencv2 - 2.4.13,它应该已经修复,因为这是29天前发布的,但我没有尝试过。检查所有版本here

注意: - OpenCV3引入了一些设计更改,可能会使您的旧代码中断。一些例子: - Highgui现在被破坏为VideoIO和ImgCodecs。此外,Core.rectangle之类的函数已移至ImgProc。不过,在我看来,这些变化使OpenCV更直观,更易于使用。

**一般来说,**

此问题通常有三个可能的原因:

  1. OpenCV使用的基础视频解码器库。在大多数情况下,它的FFmpeg,除非你在编译OpenCV时重写它。

  2. 文件中存在任何损坏,因此请尝试使用其他几个文件(从不同的相机中捕获)。

  3. 最后,第三个问题可能是OpenCV中的一个错误。