Wie finde ich einen Farbbereich "Upper" und "Lower" einer Farbe? - python - Program QA

Wie finde ich einen Farbbereich "Upper" und "Lower" einer Farbe?

2020-06-30 python opencv

Ich habe gerade angefangen, Farbfilterung mit opencv zu lernen. Ich habe die meisten Grundlagen verstanden, bin aber auf eine Sache fixiert.

import cv2
import numpy as np

img = cv2.imread("Circles.png")

hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

lower_range = np.array([169,100,100])
upper_range = np.array([189,255,255])

mask = cv2.inRange(hsv, lower_range, upper_range)

cv2.imshow("Image", img)
cv2.imshow("Mask",mask)

cv2.waitKey(0)
cv2.destroyAllWindows()

Wo finde ich den Bereich der Farben, die ich filtern möchte?

Danke dir

Answers

Sie versuchen also im Grunde, eine Farbe herauszufiltern. Standardmäßig werden die Bilder in drei Kanälen dargestellt: Blau, Grün und Rot. Mit diesem Darstellungsmodus können Sie Farben jedoch nicht einfach filtern, da die Werte in drei Kanäle aufgeteilt sind. Hier kommt der HSV-Darstellungsmodus (Farbton, Sättigung, Wert) ins Spiel.

Die Zeile hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) konvertiert das Bild im BGR-Format in eine Darstellung im HSV-Format. Jetzt können Sie den Wert Ihrer gewünschten Farbe abrufen und einfach den + -Delta-Wert zum H-Kanal hinzufügen und die Farbe entsprechend filtern.

Zum Beispiel, wenn Sie die grüne Farbe filtern möchten Die BGR-Darstellung der grünen Farbe ist (0,255,0). Zuerst müssen wir die äquivalente Farbdarstellung im HSV finden, nämlich (60,255,255). Wir können entsprechend [H-10, 100, 100] und [H + 10, 255, 255] als obere und untere Werte hinzufügen.

Sie können jede BGR mit in einen entsprechenden HSV-Wert umwandeln.

color_bgr=np.uint8([[[0,255,0]]])
color_hsv = cv2.cvtColor(color_bgr,cv2.COLOR_BGR2HSV)
print(color_hsv)

Weitere Informationen finden Sie unter diesem Link https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_imgproc/py_colorspaces/py_colorspaces.html

Related