Heim > Backend-Entwicklung > C++ > Hauptteil

Wie können wir die rote Farberkennung in OpenCV mithilfe des HSV-Farbraums verbessern?

Patricia Arquette
Freigeben: 2024-11-12 05:06:02
Original
719 Leute haben es durchsucht

How can we enhance red color detection in OpenCV using HSV color space?

Verbesserte rote Farberkennung in OpenCV mithilfe des HSV-Farbraums

Dieser Artikel zielt darauf ab, die Genauigkeit der roten Farberkennung in Bildern mithilfe des HSV von OpenCV zu verbessern Farbraum.

Problem:

Das Erkennen eines roten Rechtecks ​​in einem Bild mithilfe von cv::inRange und HSV-Farbraum führt derzeit zu unbefriedigenden Ergebnissen. Das gewünschte Ergebnis besteht darin, das rote Rechteck effektiv zu isolieren.

Lösung:

Bei HSV erstreckt sich die rote Farbe über einen Bereich, der um den Wert 180 herum liegt. Zu berücksichtigen Daher sollte der HSV-Bereich Werte sowohl in [0,10] als auch in [170, 180] enthalten.

Codeaktualisierung:

Der folgende Codeausschnitt demonstriert die Aktualisierung Ansatz:

# Include OpenCV library
import cv2

# Define HSV range for red color
H_MIN1 = 0
H_MAX1 = 10
H_MIN2 = 170
H_MAX2 = 180
S_MIN = 70
S_MAX = 255
V_MIN = 50
V_MAX = 255

# Read the input image
image = cv2.imread('image.png')

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

# Create masks for the two ranges of red hue
mask1 = cv2.inRange(hsv, (H_MIN1, S_MIN, V_MIN), (H_MAX1, S_MAX, V_MAX))
mask2 = cv2.inRange(hsv, (H_MIN2, S_MIN, V_MIN), (H_MAX2, S_MAX, V_MAX))

# Combine the masks
mask = cv2.bitwise_or(mask1, mask2)

# Display the resulting mask
cv2.imshow('Mask', mask)
cv2.waitKey(0)
Nach dem Login kopieren

Alternativer Ansatz: Cyan-Erkennung

Eine weitere effektive Methode besteht darin, das BGR-Bild zu invertieren, in HSV zu konvertieren und die Cyan-Farbe zu isolieren (komplementär). zu rot). Dadurch entfällt die Notwendigkeit, mehrere Farbtonbereiche zu überprüfen.

Code für die Cyan-Erkennung:

# Invert the BGR image
inverted = 255 - image

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

# Isolate cyan color
cyan_mask = cv2.inRange(hsv_inverted, (90-10, S_MIN, V_MIN), (90+10, S_MAX, V_MAX))

# Display the cyan mask
cv2.imshow('Cyan Mask', cyan_mask)
cv2.waitKey(0)
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie können wir die rote Farberkennung in OpenCV mithilfe des HSV-Farbraums verbessern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage