Heim > Artikel > Backend-Entwicklung > Wie kann ich die rote Farberkennung in OpenCV mithilfe des HSV-Farbraums verbessern?
Einführung
Beim Umgang mit der Erkennung roter Farbe mithilfe von OpenCV und HSV-Farbe Auf engstem Raum kann es schwierig sein, zufriedenstellende Ergebnisse zu erzielen. Durch die Erforschung verschiedener Ansätze und Parameteranpassungen können jedoch erhebliche Verbesserungen erzielt werden.
Problem
Um die Erkennung eines roten Rechtecks innerhalb eines Bildes zu verbessern, verwenden Sie den folgenden Code wurde verwendet:
#include <opencv2/opencv.hpp> int main() { // Image initialization Mat input = imread("path_to_image"); // HSV conversion Mat imageHSV; cvtColor(input, imageHSV, COLOR_BGR2HSV); // HSV parameter ranges int H_MIN = 0; int H_MAX = 10; int S_MIN = 70; int S_MAX = 255; int V_MIN = 50; int V_MAX = 255; // Red color range in HSV cv::inRange(imageHSV, cv::Scalar(H_MIN, S_MIN, V_MIN), cv::Scalar(H_MAX, S_MAX, V_MAX), imgThreshold0); }
Trotz der Anpassung der HSV-Werte mithilfe dynamischer Trackbars bleiben optimale Ergebnisse erhalten schwer fassbar.
Lösungen
1. Erweitern des Farbtonwertbereichs:
Im HSV-Raum liegt die rote Farbe bei etwa 180. Um den gesamten Rotbereich vollständig zu erfassen, muss der Farbtonwert (H) daher beides berücksichtigen [0,10] und [170, 180].
inRange(hsv, Scalar(0, 70, 50), Scalar(10, 255, 255), mask1); inRange(hsv, Scalar(170, 70, 50), Scalar(180, 255, 255), mask2);
2. Bild invertieren und Cyan erkennen:
Alternativ besteht ein interessanter Ansatz darin:
Diese Methode erkennt effektiv das Komplement von Rot (Cyan) mit nur einem einzigen Bereich in HSV.
// Invert original image Mat3b bgr_inv = ~bgr; // Convert to HSV Mat3b hsv_inv; cvtColor(bgr_inv, hsv_inv, COLOR_BGR2HSV); // Detect cyan range inRange(hsv_inv, Scalar(90 - 10, 70, 50), Scalar(90 + 10, 255, 255), mask);
Schlussfolgerung
Durch die Integration dieser verbesserten Techniken kann OpenCV die rote Farbe effektiver und präziser erkennen. Diese Ansätze bieten eine solide Grundlage für weitere Optimierungen und Anwendungen in verschiedenen Bildverarbeitungsszenarien.
Das obige ist der detaillierte Inhalt vonWie kann ich 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!