Maison  >  Article  >  développement back-end  >  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:02940parcourir

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 à l'aide de la méthode cv::inRange d'OpenCV dans l'espace colorimétrique HSV.

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 fournit résultats insatisfaisants.

Solution améliorée :

L'approche originale ne tient pas compte de « l'enveloppement » de la couleur rouge à environ 180 degrés dans l'espace HSV. 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 l'image BGR.
  2. Convertir en HSV.
  3. Rechercher le cyan couleur.
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