動画ファイルを作成する場合、そのサイズは重要です。新しいビデオファイルのサイズを小さくするために、フレーム全体ではなく、フレーム同士を JPEG 形式で保存したいと考えています。私は Aforge.Net Framework を使用しましたが、(Difference クラスを使用して) 違いの結果をうまく生成しますが、現在のフレームを生成するためにフレームを前のフレームとマージしたい場合、結果は必要ありません。以下の例を参照してください。
これは背景フレームです
これは現在のフレームです
これが差分フレームです
差を取得するためのコード:
AForge.Imaging.Filters.Difference sb = new AForge.Imaging.Filters.Difference(bmpDest);
Bitmap result = sb.Apply(bmpSrc);
result.Save(string.Format(address, 10002), ImageFormat.Jpeg);
ご存知のように、差分フレームを背景フレームとマージすると、現在のフレームを生成する必要がありますが、これは生成されたフレームです。
ソースコードは次のとおりです。
AForge.Imaging.Filters.Merge mg = new AForge.Imaging.Filters.Merge(bmpSrc);
Bitmap results = mg.Apply(new Bitmap(string.Format(address, 10002)));
results.Save(string.Format(address, 1004), ImageFormat.Jpeg);
したがって、問題は明らかです。これらはスクリーンキャプチャですが、この操作を使用してカメラをキャプチャしたい場合、結果にも多くの問題があります。
この操作にもopenCVを使用しましたが、違いを得るために言及されている指示では、最初にフレームをグレースケール画像に変換する必要があり、AForgeのように画像のマージにも問題があります。
そして最後にアルゴリズムを使用しましたが、差分画像のサイズは元の画像よりも大きくなります!
この操作はどのようにすればよいですか?画像のサイズは非常に重要であり、JPEG ファイルを保存したい (圧縮用) ことを覚えておいてください。
上級者に感謝...