0

I've mRgba Matrix and a Rect r(フレーム内で認識されたもの)

によって定義されるフレームのこの部分のサブマトリックスが必要ですRect r.

このように使用すると:

sub = mRgba.submat(r);

適切なサブマトリックスを取得しましたが、次のステップに問題がありました。フレームのこの部分を変更してから、元にコピーして戻したいと考えています。

例えば:

 Imgproc.cvtColor(sub, sub, Imgproc.COLOR_RGBA2GRAY, 1); //make it gray
 Imgproc.cvtColor(sub, sub, Imgproc.COLOR_GRAY2RGBA, 4); //change to rgb

この変更されたサブマトリックスを元に戻すにはどうすればよいですか。または、Rect r 部分を除いてすべてゼロで mRgba と同じサイズのマスクを取得/作成するにはどうすればよいですか?

4

2 に答える 2

0
sub = mRgba.submat(r);

Imgproc.cvtColor(sub, sub, Imgproc.COLOR_RGBA2GRAY, 1); //make it gray
Imgproc.cvtColor(sub, sub, Imgproc.COLOR_GRAY2RGBA, 4); //change to rgb

sub.copyTo(mRgba.submat(r));

わかりましたこれはトリックを行うようです:)変更されたサブピクチャ/マトリックスをソースの領域にコピーします..(setROIとcopytoで通常行われること)

于 2012-06-07T07:21:13.300 に答える
0

色の数をその場で変更することは不可能であるため、コードは期待どおりに機能しません。機能させるには、一時的なマトリックスが必要です。

Mat tmp;
Imgproc.cvtColor(sub, tmp, Imgproc.COLOR_RGBA2GRAY); //make it gray
Imgproc.cvtColor(tmp, sub, Imgproc.COLOR_GRAY2RGBA); //change to rgb
于 2012-06-06T15:43:38.037 に答える