首页 > 解决方案 > 如何解决逐帧保存视频的问题

问题描述

问题是我尝试保存一个视频文件,每次我从另一个函数中得到一个帧(我检查这不是同一个帧......),创建的视频但只有一个帧。我在类外运行一个循环Video_utility并将帧发送到函数save_and_display_video

import cv2

class Video_utility:
    def __init__(self, name_video, format_video, display, fps, size):
        self.name_video = name_video
        self.format_video = format_video
        self.display = display
        self.fps = fps
        self.size = size
        self.stream_frame = None
        self.flag_update = True
        self.display = True
        self.fourcc = cv2.VideoWriter_fourcc(*'XVID')
        self.out = cv2.VideoWriter(name_video, self.fourcc, fps, self.size)
        self.i = 0

    def save_and_display_video(self, frame):
        frame = cv2.resize(frame,(self.size))
        self.out.write(frame)
        self.out.release()
        cv2.destroyAllWindows()

标签: pythonopencvvideo-processing

解决方案


不要在每一帧之后关闭文件

您的 save_and_display_video() 函数中有 self.out.release() 。

只有在收到整个视频后,您才需要这样做。


推荐阅读