我使用笔记本电脑相机录制了一段短片。我的笔记本电脑是宏碁Aspire 4755G。 我想用OpenCV Python检查视频的fps。但我得到的结果是" 1000"。不应该是30左右的某个地方吗?以下是我的代码。
PS。尝试直接从网络摄像头获取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下进行了检查。它说FRAME RATE:每秒25帧此外,我尝试用cap.get(7)替换cap.get(5)以获得有关总数的信息。视频文件中的帧数。它返回16891.视频只有16秒长,所以大约100 fps。这是OpenCV中的错误吗?或者我的代码中有什么问题?我正在使用OpenCV 2.4.9,这是我认为的最新版本。任何帮助将不胜感激。
答案 0 :(得分:1)
这取决于您的AVI文件 - 帧速率在标题(see here)中定义。我刚刚在我躺着的视频上尝试了你的代码,它给了我59.9400599401(它来自一个60fps的GoPro)。当我在十六进制编辑器中打开它时,确实有足够的位20-52给出16683,或1 / 59.9 ......以微秒为单位。
您创建的AVI可能没有正确设置该属性。
你可以做的一件事是convert the file with avconv到具有已知帧率的东西。如果你在窗户上,我肯定有一个实用程序,但我不知道一个在我的头顶。