python - OpenCV-Python : Issue with getting frame rate of video

标签 python opencv video frame-rate

我使用笔记本电脑摄像头录制了一段短片。我的笔记本电脑是 Acer Aspire 4755G。 我想使用 OpenCV Python 检查视频的 fps。但是我得到的结果是“1000”。它不应该在 30 左右左右吗?下面是我的代码。

附言。尝试直接从网络摄像头获取 fps 时出现错误。

import numpy as np
import cv2

cap = cv2.VideoCapture('test.avi')
print cap.get(5)

while(cap.isOpened()):
    ret, frame = cap.read()

    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

    cv2.imshow('frame',gray)
    if cv2.waitKey(150) & 0xFF == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()

我在 Cheese 中打开了视频(我使用的是 Ubuntu 12.04)并在“属性”下进行了检查。它说帧速率:每秒 25 帧另外,我尝试用 cap.get(7) 替换 cap.get(5) 以获得有关总数的信息。视频文件中的帧数。它返回 16891。视频只有 16 秒长,因此大约为 100 fps。它是 OpenCV 中的错误吗?还是我的代码有问题?我正在使用 OpenCV 2.4.9,我认为这是目前最新的。任何帮助将不胜感激。

最佳答案

这取决于您的 AVI 文件——帧速率在 header (see here) 中定义。我刚刚在我身边的视频上尝试了你的代码,它给了我 59.9400599401(它来自 60fps GoPro)。当我在十六进制编辑器中打开它时,确实有足够的位 20-52 给出 16683,或 1/59.9...以微秒为单位。

可能您创建/拥有的 AVI 没有正确设置该属性。

您可以做的一件事是 convert the file with avconv到具有已知帧率的东西。如果您使用的是 Windows,我敢肯定有一个实用程序,但我想不出一个。

关于python - OpenCV-Python : Issue with getting frame rate of video,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25166386/

相关文章:

python - 将同一张带有附件的卡推送给我的玻璃器皿的许多用户的最佳方法

python - 这里需要 os.path.join(dir, filename) 吗?

Python:将方阵提高到负半幂

image-processing - 它如何计算opencv中的形状伸长率?

python - 是否可以下载文件的特定部分?

javascript - Python 编码 Web 套接字帧

opencv - Darknet的问题

javascript - 将部分视频流传输至客户端

Android - 通过本地 HTTPS 服务器的视频流 : SSL certificate rejected

python - Opencv:从许可证中裁剪文本区域