【问题标题】:How do I use the FPS argument in cv2.VideoWriter?如何在 cv2.VideoWriter 中使用 FPS 参数?
【发布时间】:2012-12-04 02:07:29
【问题描述】:

好的,我正在制作视频。我想确切地知道如何使用 FPS 参数。它是一个浮点数,所以我认为这是我想要的每帧之间的间隔。能给我举个例子吗?我只想知道视频会如何随着不同的 FPS 参数值而变化。因为我制作的视频现在太快了。谢谢!

【问题讨论】:

    标签: python video opencv windows-xp python-2.5


    【解决方案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 个空白行
    猜你喜欢
    • 2020-10-10
    • 1970-01-01
    • 2012-03-06
    • 1970-01-01
    • 2019-04-09
    • 2020-07-30
    • 2019-06-12
    • 2019-05-10
    • 2013-03-13
    相关资源
    最近更新 更多