Ich habe ein Farbbild mit der OpenCV-Funktion importiert.Wie erhalten Sie die Pixelindizes eines bestimmten RGB-Wertes eines Bildes in Python?
im = cv2.imread('test.jpg')
Ich suche nach den Indizes von weißen Pixeln, die einen Pixelwert von [255, 255, 255] haben. Ich weiß, dass es ein 3D-Array ist. Aber was komisch ist, ist der Wert von im [0,0] ist [255 255 255], anstatt [255, 255, 255]. Und im [0,0,0] ist 255. So [255 255 255] scheint wie eine Liste oder etwas, aber eigentlich nicht gleichwertig zu [255, 255, 255].
>>> print im[0,0]
[255 255 255]
>>> print im[0,0,0]
255
Also meine Fragen sind:
- Was ist der Unterschied zwischen [255 255 255] und [255, 255, 255]?
- Wie kann ich die Indizes aller Pixel erhalten? Welcher Suchalgorithmus sollte ich verwenden?
In C++ würden Sie 'cv :: findNonZero' auf der Maske der weißen Pixel verwenden:' cv :: Mat1b Maske; cv :: inRange (img, cv :: Skalar (255,255,255), cv :: Skalar (255,255,255), Maske); Std :: Vektor Punkte; cv :: findNonZero (Maske, Punkte); '. Es sollte etwas Ähnliches auch in Python-Wrappern geben. Oder wahrscheinlich ein Shurtcut mit Numpy-Einrichtungen ... –
Miki