Ich verwende opencv und numpy, um einige Satellitenbilder zu verarbeiten.Wie kann ich prüfen, ob ein Pixel in einem RGB-Bild grün ist?
Ich muss unterscheiden, was "Land" von was ist "grün" (Pflanzen und Vegetation).
Meine Frage ist: Wie kann ich entscheiden, welche Werte im RGB-Format nah an grün sind?
Was ich bisher zu tun ist:
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
Dieser Code funktioniert, aber es ist nicht wirklich nützlich. Ich brauche eine genauere Art zu entscheiden, welche RGB-Werte Grün entsprechen und welche nicht.
Wie kann ich das erreichen?
Eine leichte Falte r = 255 g = 200 b = 255 ist hellviolett. Ziehen Sie stattdessen die Verwendung von g> 64 und g> r + b –
in Betracht, was Ihnen dabei helfen kann: [Farbabstand] (https://en.wikipedia.org/wiki/Color_difference). – Arnial
Normalerweise möchten Sie eine überwachte Klassifizierung durchführen, die auch Infrarotbänder und andere Faktoren wie Textur zusammen mit Grundwahrheit und Genauigkeitsanalyse verwenden könnte. Der Versuch, dies nur mit RGB zu tun, wird wahrscheinlich zu einem begrenzten Erfolg führen. –