2017-12-18 3 views
0

Ich möchte eine Maske, die diejenigen, die bestimmte Zellen in einem Bild entsprechen hat. In diesen Zellen sollte mindestens einer ihrer RGB-Farbwerte größer als ein Schwellenwert sein. Hier ist mein Code, der nicht funktioniert:NumPy wo Bedingung, um Zellen mit max (R, G, B)> einen Schwellenwert zu bekommen

B = image[0:h,0:w,0].astype(int) 
G = image[0:h,0:w,1].astype(int) 
R = image[0:h,0:w,2].astype(int) 
mask = np.zeros((h,w)) 

mask[np.where(max(R,G,B) > threshold)] = 1 

dies ein Fehler gibt:

ValueError occurred Message=The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

Antwort

2

Da Ihr Bild ein Array 3D ist (h, w, 3), können Sie max(R, G, B) erhalten, indem einfach das Maximum der letzten Einnahme Achse:

np.max(image, axis=-1) 

Vergleichen Sie den zurückgegebenen Wert mit threshold und Sie erhalten eine bool Array. Werfen Sie das auf int, um eine Maske von Nullen und Einsen zu erhalten:

+0

Es hat funktioniert! Danke: D –

+0

@AhmedMaher https://meta.stackexchange.com/help/someone-answers –