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)
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!