2016-08-16 3 views
1

Ich löste ein Problem mit einer Schleife, aber es ist sowohl langsam als auch unpythonisch. Ich suche eine Maskenlösung. Wenn ich für einen bestimmten Kanal in Pixel mit Werten interessiert waren, das wäre einfach:2D-Maske für eine bestimmte Farbe

img[img[:,:,0]==64] = [0,0,0] 

sie alle schwarz zu machen. Ich möchte eine bestimmte Farbe ändern, z. [192,0,128], also brauche ich alle drei Kanäle, so etwas wie img[ img[:,:,0]==192 and img[:,:,1]==0 and img[:,:,2]==128]=[0,0,0] aber das ist natürlich falsch. Ich habe auch versucht np.all(img==[192,0,128]), aber es hat auch nicht funktioniert.

Antwort

0

OK, ich habe gerade numpy.logical_and() verwendet und es hat den Trick gemacht!

1

Sie waren fast da:

np.all(img == [192,0,128], axis=-1) 

gibt, was Sie suchen. Sie müssen eine Achse angeben, um die Dimensionsreduktion durchzuführen, die hier der Farbkanalachse entspricht.

Verwandte Themen