私はいくつかの衛星画像を処理するためにopencvとnumpyを使用しています。RGBイメージのピクセルが緑色であるかどうかを確認するにはどうすればよいですか?
"緑"(作物や植生)とは "土地"を区別する必要があります。
私の質問は:どのような値をRGB形式の緑色に近いものにすることができますか?
img = cv2.imread('image1.jpg',1)
mat = np.asarray(img)
for elemento in mat:
for pixel in elemento:
if pixel[1] > 200: # If the level of green is higher than 200, I change it to black
pixel[0] = 0
pixel[1] = 0
pixel[2] = 0
else: # If the level of G is lower than 200 I change it to white.
pixel[0] = 255
pixel[1] = 255
pixel[2] = 255
このコードは動作しますが、本当に便利ではありません。
は、私がこれまでにやっていることです。どのRGB値が緑に対応し、どのRGB値が緑に対応するのかを判断するためには、より正確な方法が必要です。
どうすればこの問題を解決できますか?
1つのわずかなシワr = 255 g = 200 b = 255は薄紫です。代わりにg> 64、g> r + b –
を使用することをお勧めします。[color distance](https://en.wikipedia.org/wiki/Color_difference)に役立ちます。 – Arnial
一般的には、赤外線バンド、地面の真実と精度の分析とともにテクスチャなどの他の要因を使用することがある監督された分類を行いたいと思うでしょう。 RGBだけでそれをしようとすると、成功は限られてしまうでしょう。 –