可以在opencv中删除视频文件中的帧

时间:2012-10-07 00:39:44

标签: python opencv

我可以使用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个字节,因为它读取后会删除视频文件中的帧。

2 个答案:

答案 0 :(得分:1)

OpenCV不适合这项工作。您需要的是一个媒体处理框架,如ffmpeg(= libavformat / libavcodec / libswscale)或GStreamer。

此外,根据所使用的编码方案,可能无法仅删除单个帧。仅在仅包含 Intra 帧(I帧)的视频中,帧精确编辑是可能的。如果视频在所谓的图片组(GOP)中进行编码,则移除单个帧需要重新编码整个GOP,这是其中的一部分。

答案 1 :(得分:0)

您无法就地执行,但您可以使用OpenCV的VideoWriter在新视频文件中编写所需的帧。