Heim  >  Artikel  >  Backend-Entwicklung  >  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
Mary-Kate OlsenOriginal
2024-11-16 08:43:02800Durchsuche

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);
}

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:

  • 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);

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!

Stellungnahme:
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