Heim > Backend-Entwicklung > C++ > Wie kann ich die rote Farberkennung in OpenCV mithilfe des HSV-Farbraums verbessern?

Wie kann ich die rote Farberkennung in OpenCV mithilfe des HSV-Farbraums verbessern?

Mary-Kate Olsen
Freigeben: 2024-11-16 08:43:02
Original
934 Leute haben es durchsucht

How can I improve red color detection in OpenCV using HSV color space?

Verbesserte Erkennung roter Farbe mit OpenCV

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);
}
Nach dem Login kopieren

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);
Nach dem Login kopieren

2. Bild invertieren und Cyan erkennen:

Alternativ besteht ein interessanter Ansatz darin:

  • Das ursprüngliche BGR-Bild umkehren.
  • Das invertierte Bild in HSV konvertieren .
  • Erkennen Sie die Farbe Cyan (ca. HSV 90) statt Rot.

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);
Nach dem Login kopieren

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!

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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage