kinectセンサーを使ったプロジェクトでopenNIを使用しています。デプスマップで指定されたユーザーのピクセルに色を付けたいのですが。今、私は白から黒に変わるピクセルを持っていますが、私は赤から黒になりたいです。アルファブレンディングを試しましたが、(addWeightを使用して)赤+白=ピンクを追加したため、ピンクから黒までのピクセルが得られました。
これは私の実際のコードです:
layers = device.getDepth().clone();
cvtColor(layers, layers, CV_GRAY2BGR);
Mat red = Mat(240,320, CV_8UC3, Scalar(255,0,0));
Mat red_body; // = Mat::zeros(240,320, CV_8UC3);
red.copyTo(red_body, device.getUserMask());
addWeighted(red_body, 0.8, layers, 0.5, 0.0, layers);
ここで、device.getDepth()は深度マップを含むcv :: Matを返し、device.getUserMask()はユーザーピクセル(白いピクセルのみ)を含むcv::Matを返します。
いくつかのアドバイス?
編集:もう1つ:サミーの答えのおかげで私はそれをしました。しかし実際には、0から255までの値ではなく、(たとえば)123から220までの値があります。
単純なforループを介して最小値と最大値を見つけます(より良い方法はありますか?)。値をmin-maxから0-255にマップするにはどうすればよいですか?