如何在 cv2.VideoWriter 中使用 FPS 参数?
Posted
技术标签:
【中文标题】如何在 cv2.VideoWriter 中使用 FPS 参数?【英文标题】:How do I use the FPS argument in cv2.VideoWriter? 【发布时间】:2012-12-04 02:07:29 【问题描述】:好的,我正在制作视频。我想确切地知道如何使用 FPS 参数。它是一个浮点数,所以我认为这是我想要的每帧之间的间隔。能给我举个例子吗?我只想知道视频会如何随着不同的 FPS 参数值而变化。因为我制作的视频现在太快了。谢谢!
【问题讨论】:
【参考方案1】:真的就是这样 - frames per second
。也就是说,你希望每秒显示多少帧?
这是一个例子:
writer = cv2.VideoWriter(filename="my_video.avi", #Provide a file to write the video to
fourcc=cv2.cv.CV_FOURCC('i','Y', 'U', 'V'), #Use whichever codec works for you...
fps=15, #How many frames do you want to display per second in your video?
frameSize=(width, height)) #The size of the frames you are writing
示例用法:
while True:
flag, frame = capture.read()
cv2.imshow("Camera", frame)
key_pressed = cv2.waitKey(10)
if key_pressed == 27: #Escape key
break
writer.write(frame)
cv2.destroyAllWindows()
因此,您将拥有一个视频文件,该文件由您的相机拍摄的所有静止帧拼接在一起形成一个视频。每秒显示的帧数将与您使用 fps
参数设置的一样。 (如果你的视频太快,我建议设置较低的fps
)
我写了这段代码,所以我没有测试它,但它应该可以工作。如果您有任何疑问或问题,请告诉我。希望对你有帮助!
【讨论】:
感谢您的回答,我使用kivy
Clock.schedule_interval( func, 0)
而不是while loop
来记录我的屏幕,我尝试将fps
设置为15
,@ 987654331@ 和 5
,但对于 fps = 5 or 10
来说,对于快动作视频来说似乎有点滞后。有什么解决办法吗?
@PaulLam 如果您的屏幕刷新率为 60Hz,但您每秒只能捕获 5 到 10 帧,那么您会丢失很多信息。你能每秒捕捉更多帧吗?
嗯,我不确定。目前我正在尝试使用thread
来线程化一个使用while 循环来捕获帧的函数。我认为它可以捕获更多帧,但似乎还不够。我使用 print
打印 True
如果已经捕获 1 秒,否则 print("")
并且在打印出 True
之前我会得到 13 - 15 个空白行以上是关于如何在 cv2.VideoWriter 中使用 FPS 参数?的主要内容,如果未能解决你的问题,请参考以下文章
使用 cv2 VideoWriter 编写 numpy 数组
cv2.VideoWriter() 在带有 Raspicam 的 Raspberry Pi 上不起作用
cv2.VideoWriter:请求一个元组作为 Size 参数,然后拒绝它
cv2.VideoWriter 不会使用fourcc h.264写入文件(使用罗技c920,python 2.7,windows 8)