Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann ich in OpenCV mithilfe des HSV-Farbraums eine präzisere Erkennung der roten Farbe erreichen?

Wie kann ich in OpenCV mithilfe des HSV-Farbraums eine präzisere Erkennung der roten Farbe erreichen?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-22 08:53:10259Durchsuche

How can I achieve more precise red color detection in OpenCV using HSV color space?

Verbesserung der roten Farberkennung mit OpenCV mithilfe des HSV-Farbraums

In OpenCV bietet der HSV-Farbraum einen effektiven Ansatz zur Erkennung bestimmter Farben. einschließlich rot. Aufgrund der kreisförmigen Natur des Farbtonkanals in HSV kann die rote Farbe jedoch Werte um 180 Grad umwickeln. Dies kann bei der genauen Erkennung roter Objekte zu Herausforderungen führen.

Um dieses Problem zu lösen, kann eine genauere Erkennung erreicht werden, indem zwei Bereiche für die Farbtonkomponente berücksichtigt werden: [0,10] und [170, 180]. Durch die Einbeziehung beider Bereiche stellen wir sicher, dass die Erkennung das gesamte rote Farbspektrum abdeckt.

Der folgende Python-Code demonstriert diesen Ansatz:

import cv2

# Read the input image
image = cv2.imread("path_to_image")

# Convert BGR to HSV color space
hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)

# Define HSV values for red color
hue_min1 = 0
hue_max1 = 10
hue_min2 = 170
hue_max2 = 180
sat_min = 70
sat_max = 255
val_min = 50
val_max = 255

# Create masks for the two hue ranges
mask1 = cv2.inRange(hsv, (hue_min1, sat_min, val_min), (hue_max1, sat_max, val_max))
mask2 = cv2.inRange(hsv, (hue_min2, sat_min, val_min), (hue_max2, sat_max, val_max))

# Combine the masks
mask = mask1 | mask2

# Display the mask
cv2.imshow("Mask", mask)
cv2.waitKey(0)
cv2.destroyAllWindows()

Dieser Code erkennt effektiv das rote Rechteck im Bild , wie in der Maskenausgabe gezeigt.

Alternativer Ansatz

Eine alternative Methode ist die Invertierung das BGR-Bild und konvertieren Sie es dann in HSV. Dieser Ansatz sucht im Wesentlichen nach der Komplementärfarbe Cyan (90 Grad auf dem Farbtonkanal), sodass Sie Rot mit einem einzigen Bereich erkennen können.

Der folgende Python-Code demonstriert diese Technik:

import cv2

# Read the input image
image = cv2.imread("path_to_image")

# Invert the BGR image
inverted_image = cv2.bitwise_not(image)

# Convert inverted image to HSV color space
hsv_inverted = cv2.cvtColor(inverted_image, cv2.COLOR_BGR2HSV)

# Define HSV values for cyan color (inverted red)
hue_min = 90 - 10
hue_max = 90 + 10
sat_min = 70
sat_max = 255
val_min = 50
val_max = 255

# Create a mask for the cyan color range
mask = cv2.inRange(hsv_inverted, (hue_min, sat_min, val_min), (hue_max, sat_max, val_max))

# Display the mask
cv2.imshow("Mask", mask)
cv2.waitKey(0)
cv2.destroyAllWindows()

Beide Ansätze bieten eine verbesserte Erkennung der roten Farbe mithilfe von OpenCV im HSV-Farbraum und liefern so genauere Ergebnisse für Bildverarbeitungsanwendungen.

Das obige ist der detaillierte Inhalt vonWie kann ich in OpenCV mithilfe des HSV-Farbraums eine präzisere Erkennung der roten Farbe erreichen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn