Maison >développement back-end >C++ >Comment améliorer la précision de la détection des objets rouges dans l'espace colorimétrique HSV avec OpenCV ?

Comment améliorer la précision de la détection des objets rouges dans l'espace colorimétrique HSV avec OpenCV ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-15 04:43:021057parcourir

How to Improve Red Object Detection Accuracy in HSV Color Space with OpenCV?

Détection optimisée des objets de l'espace colorimétrique HSV avec OpenCV

Problème :

Étant donné une image contenant un rectangle rouge, la tâche est d'améliorer la précision de détection de la couleur rouge en utilisant la méthode cv::inRange d'OpenCV dans la couleur HSV espace.

Approche originale :

int H_MIN = 0;
int H_MAX = 10;
int S_MIN = 70; 
int S_MAX = 255;
int V_MIN = 50;
int V_MAX = 255;

cv::inRange( imageHSV, cv::Scalar( H_MIN, S_MIN, V_MIN ), cv::Scalar( H_MAX, S_MAX, V_MAX ), imgThreshold0 );

Cette approche donne des résultats insatisfaisants.

Solution améliorée :

L'approche originale ne tient pas compte de "l'enveloppement" de la couleur rouge autour de 180 degrés dans le HSV espace. Pour résoudre ce problème, la plage H doit inclure à la fois [0,10] et [170, 180].

inRange(hsv, Scalar(0, 70, 50), Scalar(10, 255, 255), mask1);
inRange(hsv, Scalar(170, 70, 50), Scalar(180, 255, 255), mask2);

Mat1b mask = mask1 | mask2;

Cette approche mise à jour donne des résultats de détection améliorés.

Alternative Approche :

Une autre méthode efficace consiste à :

  1. Inverser le Image BGR.
  2. Convertir en HSV.
  3. Rechercher la couleur cyan.
Mat3b bgr_inv = ~bgr;
inRange(hsv_inv, Scalar(90 - 10, 70, 50), Scalar(90 + 10, 255, 255), mask); // Cyan is 90

Cette approche alternative fournit une vérification de plage unique et produit des résultats satisfaisants.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn