1

アルファチャネルを備えたPNGを使用して、ビデオストリームから現在のフレームを「マスク」しようとしています。

私のPNGには、処理したくない領域に黒いピクセルがあり、他の領域にはアルファがあります。現在、4チャンネルの4色画像が保存されていますが、バイナリ画像の場合もあります。

画像の背景の減算と輪郭の検索を行っているので、「マスク」画像から現在の画像に黒いピクセルをコピーすると、黒い領域に輪郭が見つからなくなると思います。これは良いアプローチですか?もしそうなら、どうすれば黒/不透明なピクセルcv::Matを上下にコピーできますか?

4

1 に答える 1

2

あなたが説明していることは、イメージマスクの使用法のように私には聞こえます。OpenCVライブラリで利用可能な非常に多くのメソッドがマスキングをサポートしている場合、アルファチャネルでそれを行うのは奇妙です。アルファチャネルを使用するのではなく、輪郭を見つけたい場所にゼロ以外の値を持つ別のバイナリイメージを作成してみませんか?

使用するアルゴリズムに応じて、黒いピクセル領域に輪郭が見つからないという仮定は正しいです。残念ながら、Mat構造の要点を理解せずに、ある画像から別の画像にピクセルを選択的にコピーし、バイトからバイト/ピクセルからピクセルに反復する効率的な方法を知りません。上に示したマスクのアイデアを前処理関数で使用し、結果のバイナリイメージをfindContoursなどに送信すると、OpenCVライブラリのすでに適切に記述され最適化されたコードを利用し、さらに多くの情報を保持できます。それが属するあなたの頭の上のあなたの髪の;)。

于 2012-07-27T18:13:27.397 に答える