2017-10-13 12 views
0

Imageのヒストグラムを計算します。 私はマスクを使用する必要があります。私のマスクは黒と白のイメージのように見えるはずですか? 黒はスペースを無視し、白は計算しますか?OpenCVヒストグラムマスク

マスクを作成します。私は白い画素(R> 220 &G> 220 & B> 220)を黒に、それ以外を白に置き換えます。

私はそれを正しくやっていますか?

+1

マスクのあなたの一般的な理解は正しいです。もしあなたがしようとしているのは、220より小さい値を持つすべてのピクセルのヒストグラムを計算することです。 –

答えて

2

ピクセルの値が各チャンネルで220未満である画像の部分のヒストグラムを計算したい場合は、マスクを作成するソリューションが適切です。 オリジナルイメージのピクセルを置き換えないように注意してください。元の画像と同じ高さと幅の単一チャネルcv::Matを作成してください。次に、元の画像に従ってピクセルを塗りつぶします。 またcv::inRange機能を使用してこのようなマスクを作ることができる:

cv::MAT mask; 
// make inverted mask in order to avoid masking pure red, green or blue 
cv::inRange(original_image, cv::Scalar(220, 220, 220), cv::Scalar(255, 255, 255), mask); 
// make non-inverted mask 
mask = 255 - mask; 
+0

このようにしてコード化すれば、 '(0、0、255) '、それは白ではありません。 'cv :: inRange'のロジックがANDであるために起こります。 – Soroush

+0

これはコードが行っていることとまったく同じです。彼は白い画素を探していると言いました。したがって、最初に見つけなければなりませんが、マスクして元のマスクを反転させたいと思っています。 https://photos.app.goo.gl/dNLz8pdeIa4fkK5B2 「(0-220,0-220,0-220)」バウンドを使用して: https://photos.app.goo .gl/HvNkQ0XfynRnzsIv2 – Soroush

+0

私は今、時間を取ってくれてありがとうございます--- OPは反転マスクが欲しいと気づいていませんでした。私は私のコメントを削除します。 –