0

ビデオを開いて、を使用してopencv2で再生できます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)やGStreamerなどのメディア処理フレームワークです。

また、使用するエンコーディングスキームによっては、1つのフレームだけを削除できない場合があります。イントラフレーム(Iフレーム)のみで構成されるビデオでのみ、フレームの正確な編集が可能です。ビデオがいわゆるGroupofPictures(GOP)でエンコードされている場合単一のフレームを削除するには、それが含まれていたGOP全体を再エンコードする必要があります。

于 2012-10-07T00:44:28.617 に答える
0

インプレースで行うことはできませんが、OpenCVのVideoWriterを使用して、必要なフレームを新しいビデオファイルに書き込むことができます。

于 2012-10-07T00:49:48.107 に答える