【问题标题】:Possible to delete frames from a video file in opencv可以从opencv中的视频文件中删除帧
【发布时间】:2012-10-07 00:39:44
【问题描述】:

我可以使用 cv2.VideoCapture(myvideo) 打开视频并使用 opencv 2 播放它。但是有没有办法使用opencv 2删除该视频中的一帧?删除必须就地发生,也就是说,由于删除的帧,正在播放的文件将以更短的时间结束。仅仅将矩阵归零是不够的。

例如:

video = cv2.VideoCapture(myvideo.flv)

while True:
    img = video.read()

    # Show the image
    cv2.imgshow(img)

    # Then go delete it and proceed to next frame, but is this possible?
    # delete(img)??

所以上面的代码在技术上会在末尾包含 0 个字节,因为它会读取然后删除视频文件中的帧。

【问题讨论】:

    标签: python opencv


    【解决方案1】:

    OpenCV 不是这项工作的正确工具。为此,您需要一个媒体处理框架,例如 ffmpeg (=libavformat/libavcodec/libswscale) 或 GS​​treamer。

    还取决于所使用的编码方案,可能无法仅删除单个帧。只有在仅由 Intra 帧(I 帧)组成的视频中,才能进行帧精确编辑。如果视频在所谓的 图片组 (GOP) 中编码,则删除单个帧需要重新编码它所属的整个 GOP。

    【讨论】:

      【解决方案2】:

      您无法就地完成,但您可以使用 OpenCV 的 VideoWriter 在新视频文件中写入您想要的帧。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-06-19
        • 1970-01-01
        • 2015-04-14
        相关资源
        最近更新 更多