Heim > Backend-Entwicklung > Python-Tutorial > Wie kann man HSV-Grenzen für die Farberkennung in OpenCV mithilfe von cv2.inRange genau bestimmen?

Wie kann man HSV-Grenzen für die Farberkennung in OpenCV mithilfe von cv2.inRange genau bestimmen?

Susan Sarandon
Freigeben: 2024-12-16 06:44:09
Original
767 Leute haben es durchsucht

How to Accurately Determine HSV Boundaries for Color Detection in OpenCV using cv2.inRange?

Bestimmen von HSV-Grenzen für die Farberkennung mit cv2.inRange in OpenCV

Bei Verwendung der cv2.inRange-Funktion in OpenCV für die Farberkennung wird Folgendes angezeigt: Es ist von entscheidender Bedeutung, geeignete obere und untere HSV-Grenzen (Farbton, Sättigung, Wert) auszuwählen, um das Ziel genau zu identifizieren Farbe.

Problemidentifizierung:

Betrachten Sie das Beispiel eines Bildes mit einer Kaffeedose mit orangefarbenem Deckel, wie unten gezeigt.

[Bild einer Kaffeedose mit orangefarbenem Deckel]

Ziel ist es, die HSV-Grenzen zu bestimmen, um den orangefarbenen Deckel zu isolieren. Zunächst wurde ein Bereich von (18, 40, 90) bis (27, 255, 255) versucht, der jedoch zu unerwarteten Ergebnissen führte.

Lösung 1: Skalenumrechnung

Es ist wichtig zu beachten, dass verschiedene Anwendungen möglicherweise unterschiedliche Skalen für HSV-Werte verwenden. OpenCV verwendet eine Skala von H: 0–179, S: 0–255, V: 0–255, während einige andere Anwendungen möglicherweise eine Skala von H: 0–360, S: 0–100, V: 0–100 verwenden. Daher ist es notwendig, die HSV-Werte entsprechend zu konvertieren.

Lösung 2: Farbraumkonvertierung

OpenCV verwendet das BGR-Farbformat (Blau, Grün, Rot). Standardeinstellung, während das Bild möglicherweise im RGB-Format (Rot, Grün, Blau) vorliegt. Um das Bild korrekt in HSV zu konvertieren, ist es wichtig, cv2.COLOR_BGR2HSV anstelle von cv2.COLOR_RGB2HSV zu verwenden.

Überarbeiteter Code:

import cv2
import numpy as np

image = cv2.imread('kaffee.png')

# Revised HSV boundaries considering scale conversion
ORANGE_MIN = np.array([5, 50, 50], np.uint8)
ORANGE_MAX = np.array([15, 255, 255], np.uint8)

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

# Apply color filtering
mask = cv2.inRange(hsv, ORANGE_MIN, ORANGE_MAX)

# Save the masked image
cv2.imwrite('kaffee_out.png', mask)
Nach dem Login kopieren

Dieser überarbeitete Ansatz sollte liefern genauere Ergebnisse bei der Isolierung des orangefarbenen Deckels der Kaffeedose.

Das obige ist der detaillierte Inhalt vonWie kann man HSV-Grenzen für die Farberkennung in OpenCV mithilfe von cv2.inRange genau bestimmen?. 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