【问题标题】:How to slow down a video captured with cv2?如何减慢用 cv2 拍摄的视频?
【发布时间】:2020-06-23 15:39:15
【问题描述】:

我的代码的问题是,视频保存后速度加快了很多,我注意到如果我更改 cv2.waitkey() 中的整数值,视频会改变速度,但是即使如果我将它设置为 1,它仍然会加速

import pyautogui
import os, cv2, threading
import numpy 
import time

#paths
path_videos = os.chdir('C:/Users/mypcname/Desktop/screenrec/videos')

codec = cv2.VideoWriter_fourcc(*'XVID')
video_file = cv2.VideoWriter(os.getcwd()+ '\\' + 'VIDEO2' + '.avi', codec, 23.976, (1920, 1080))



def rec_loop():
    global rec, path_videos, path_frames, frame_number, codec, video_file
    while True:
        #takes BGR screenshot and makes it in a NumPy array
        capture = pyautogui.screenshot()
        frame = numpy.array(capture)

        #converts BGR screenshot into RGB
        frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)

        #shows the recording screen live
        cv2.imshow('REC', frame)
       video_file.write(frame)

        #cancel recording
        if cv2.waitKey(250) == ord('Q'):
            break
            cv2.destroyAllWindows()
            video_file.release()

rec_thread = threading.Thread(target=rec_loop)
rec_thread.start()

【问题讨论】:

标签: python-3.x opencv cv2


【解决方案1】:

有几件事...

  1. 您似乎启动了一个新线程,然后并行执行任何操作,所以这表面上不太明智。

  2. 您可能会发现pyautogui 每秒只能捕获大约 2-3 帧,因此您只会以该速率将它们传递给 videowriter,因此它们会显得加快。您可以在创建输出文件之前捕获 2-10 帧,然后计算您达到的速率并将其传入。

  3. 如果使用ffmpeg,您将能够获得更好的帧率,如果 这就是你想要的。

【讨论】:

  • 谢谢!我会尝试 ffmpeg,我也会启动一个线程,因为这只是我的代码的一部分
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多