0
img = cv2.imread('example.jpg')
img_hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
# lower mask (0-10)
lower_red = np.array([0, 50, 50])
upper_red = np.array([10, 255, 255]
mask0 = cv2.inRange(img_hsv, lower_red, upper_red)
# upper mask (170-180)
lower_red = np.array([170, 50, 50])
upper_red = np.array([180, 255, 255])
mask1 = cv2.inRange(img_hsv, lower_red, upper_red)
# join my masks
mask = mask0 + mask1
height = mask.shape[0]
width = mask.shape[1]
# iterate over every pixel
for i in range(height):
for j in range(width):
px = mask[i,j]
print px
# check if pixel is white or black
if (px[2] >= 0 and px[2] <= 40):
Im obigen Beispiel ist 'px' ein Pixel in BGR. Ich muss den Wert in HSV konvertieren, weil ich überprüfen möchte, ob das Pixel in einem bestimmten Farbbereich ist.python - opencv - Pixel von bgr nach hsv konvertieren
Ich habe bereits versucht
colorsys.rgb_to_hsv(px[2], px[1], px[0})
, die den Fehler hervorruft: ungültige Indexvariable
Dank skalare!
Dank für die Antwort! Wie kann ich prüfen, ob ein einzelnes Pixel im blauen Bereich ist? – cmplx96
Es steht so in dem Code, den ich von den Dokumenten zur Verfügung gestellt habe. Holen Sie einfach Ihre 'px' aus' mask' und prüfen Sie, ob sie weiß oder schwarz ist. –
px = img [i, j] gibt jetzt 0 anstatt eines Arrays von drei Werten zurück. Wissen Sie, warum das so ist? – cmplx96