0

我可以使用 .opencv 2 打开视频并使用cv2.VideoCapture(myvideo). 但是有没有办法使用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 个字节,因为它读取然后删除视频文件中的帧。

4

2 回答 2

1

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

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

于 2012-10-07T00:44:28.617 回答
0

您不能就地执行此操作,但您可以使用 OpenCV 的VideoWriter在新视频文件中写入所需的帧。

于 2012-10-07T00:49:48.107 回答