我是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 )
谢谢!
答案 0 :(得分:1)
我在版本2.4.11中遇到了同样的困境(处理总帧数时)并升级为提交ID 0e436c3fe9e9c30c23a54449be44b2618aec1cb1,当时的头部 - 2016年6月24日。您还可以尝试更新版本的opencv2 - 2.4.13,它应该已经修复,因为这是29天前发布的,但我没有尝试过。检查所有版本here。
注意: - OpenCV3引入了一些设计更改,可能会使您的旧代码中断。一些例子: - Highgui现在被破坏为VideoIO和ImgCodecs。此外,Core.rectangle之类的函数已移至ImgProc。不过,在我看来,这些变化使OpenCV更直观,更易于使用。
**一般来说,**
此问题通常有三个可能的原因:
OpenCV使用的基础视频解码器库。在大多数情况下,它的FFmpeg,除非你在编译OpenCV时重写它。
文件中存在任何损坏,因此请尝试使用其他几个文件(从不同的相机中捕获)。
最后,第三个问题可能是OpenCV中的一个错误。