OpenCV-Python : 获取视频帧率问题

2024-06-16 16:43:44 发布

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

我用笔记本相机录了一个短片。我的笔记本电脑是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)并在Properties下进行了检查。上面说帧速率:每秒25帧,我试着用cap.get(5)替换cap.get(7),以便获得视频文件中总帧数的信息。它返回16891。这段视频只有16秒长,大约每秒100帧。是OpenCV中的一个bug吗?或者我的代码有问题吗?我使用的是OpenCV 2.4.9,这是目前我认为的最新版本。任何帮助都将不胜感激。


Tags: 代码importget视频笔记本cv2frameopencv
1条回答
网友
1楼 · 发布于 2024-06-16 16:43:44

这取决于AVI文件——帧速率在头(see here)中定义。我刚刚在一段视频上试了一下你的代码,它给了我59.9400599401(它来自一个60fps的GoPro)。当我在十六进制编辑器中打开它时,肯定有足够的位20-52给出16683或1/59.9。。。以微秒计。

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

你可以做的一件事是convert the file with avconv到一个已知帧率的东西。如果你在windows上,我肯定有一个实用程序,但我不知道一个在我的头顶上。

相关问题 更多 >