我用笔记本相机录了一个短片。我的笔记本电脑是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,这是目前我认为的最新版本。任何帮助都将不胜感激。
这取决于AVI文件——帧速率在头(see here)中定义。我刚刚在一段视频上试了一下你的代码,它给了我59.9400599401(它来自一个60fps的GoPro)。当我在十六进制编辑器中打开它时,肯定有足够的位20-52给出16683或1/59.9。。。以微秒计。
很可能您创建的AVI没有正确设置该属性。
你可以做的一件事是convert the file with avconv到一个已知帧率的东西。如果你在windows上,我肯定有一个实用程序,但我不知道一个在我的头顶上。
相关问题 更多 >
编程相关推荐