无法使用 cv2.VideoCapture(video_path).set(cv2.CAP_PROP_FPS, new_frame_rate) 更改输入视频的帧速率

him*_*ani 6 python opencv frame-rate python-3.6 opencv-python

我正在.mp4使用 opencv-python (3.4.3.18) 和 python (3.6.6)读取视频文件

vid = cv2.VideoCapture(video_path)
Run Code Online (Sandbox Code Playgroud)

原始视频大约有 59 FPS,我想将其降低到 10 FPS。所以,我cv2.CAP_PROP_FPS使用以下设置属性,

flag = vid.set(cv2.CAP_PROP_FPS, 10)
Run Code Online (Sandbox Code Playgroud)

(参考:https : //docs.opencv.org/3.4.3/d8/dfe/classcv_1_1VideoCapture.html#a8c6d8c2d37505b5ca61ffd4bb54e9a7c

但是,当我打印flag它给出的值时False。这意味着VideoCapture实例使用的后端不支持该属性。因此,当我使用阅读框架时,

return_value, frame = vid.read()
Run Code Online (Sandbox Code Playgroud)

它返回所有 59 帧,使后期处理步骤更加耗时。如何解决这个问题?

小智 0

您是否尝试过更改cv2.waitKey()

例如:如果您有 60fps 的视频,请尝试使用cv2.waitKey(6000)