


Wie wähle ich die richtigen oberen und unteren HSV-Grenzen für eine genaue Farberkennung in OpenCV aus?
Auswahl der richtigen oberen und unteren HSV-Grenzen für die Farberkennung mit cv::inRange (OpenCV)
Beim Erkennen von Farben in Bildern mithilfe von cv::inRange-Funktion in OpenCV verwenden, ist es wichtig, geeignete obere und untere Grenzen für den HSV (Farbton, Sättigung, Wert) auszuwählen. Farbraum. Dies gewährleistet eine genaue Farberkennung und ermöglicht eine effiziente Segmentierung.
Problem:
Stellen Sie sich ein Bild vor, das einen orangefarbenen Deckel einer Kaffeedose zeigt. Der HSV-Wert in der Mitte des Deckels, der mit dem Dienstprogramm gcolor2 ermittelt wurde, beträgt (22, 59, 100). Die Verwendung der anfänglichen Grenzen, die als min = (18, 40, 90) und max = (27, 255, 255) definiert sind, führte zu unerwarteten Erkennungsergebnissen.
Lösung:
Problem 1: HSV-Bereichsvariation
Verschiedene Anwendungen verwenden oft unterschiedliche Maßstäbe für HSV-Werte. GIMP verwendet beispielsweise eine Skala von H: 0–360, S: 0–100, V: 0–100, während OpenCV H: 0–179, S: 0–255, V: 0–255 verwendet. In diesem Fall sollte der Farbtonwert von 22 in GIMP in 11 in OpenCV umgewandelt werden, indem die Hälfte seines Wertes genommen wird. Somit wird die überarbeitete Grenze zu (5, 50, 50) – (15, 255, 255).
Problem 2: Farbraumkompatibilität
OpenCV verwendet die BGR (Blau-Grün-Rot) Farbformat, nicht RGB. Um die Kompatibilität sicherzustellen, sollte der Code, der RGB in HSV konvertiert, wie folgt geändert werden:
cv.CvtColor(frame, frameHSV, cv.CV_BGR2HSV)
Aktualisierter Code:
import cv in_image = 'kaffee.png' out_image = 'kaffee_out.png' out_image_thr = 'kaffee_thr.png' ORANGE_MIN = cv.Scalar(5, 50, 50) ORANGE_MAX = cv.Scalar(15, 255, 255) COLOR_MIN = ORANGE_MIN COLOR_MAX = ORANGE_MAX def test1(): frame = cv.LoadImage(in_image) frameHSV = cv.CreateImage(cv.GetSize(frame), 8, 3) cv.CvtColor(frame, frameHSV, cv.CV_BGR2HSV) frame_threshed = cv.CreateImage(cv.GetSize(frameHSV), 8, 1) cv.InRangeS(frameHSV, COLOR_MIN, COLOR_MAX, frame_threshed) cv.SaveImage(out_image_thr, frame_threshed) if __name__ == '__main__': test1()
Ergebnis:
Das Ausführen des aktualisierten Codes führt zu einer genaueren Segmentierung der Orange Deckel.
Hinweis:
Aufgrund ähnlicher Farbtöne im Hintergrund kann es zu kleinen Fehlerkennungen kommen. Um dieses Problem zu beheben, kann eine weitere Verarbeitung wie eine Konturanalyse angewendet werden, um die größte Kontur zu isolieren, die dem Deckel entspricht.
Das obige ist der detaillierte Inhalt vonWie wähle ich die richtigen oberen und unteren HSV-Grenzen für eine genaue Farberkennung in OpenCV aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

So verwenden Sie Python, um die ZiPF -Verteilung einer Textdatei zu finden

So herunterladen Sie Dateien in Python

Wie benutze ich eine schöne Suppe, um HTML zu analysieren?

Wie man mit PDF -Dokumenten mit Python arbeitet

Wie kann man mit Redis in Django -Anwendungen zwischenstrichen

Einführung des natürlichen Sprach -Toolkits (NLTK)

Wie führe ich ein tiefes Lernen mit Tensorflow oder Pytorch durch?
