Maison >développement back-end >C++ >Comment la fonction inRange d'OpenCV peut-elle être optimisée pour une détection précise de la couleur rouge dans les images ?

Comment la fonction inRange d'OpenCV peut-elle être optimisée pour une détection précise de la couleur rouge dans les images ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-19 09:09:021057parcourir

How can OpenCV's inRange function be optimized for accurate red color detection in images?

Utiliser OpenCV pour améliorer la détection des couleurs rouges

Une détection précise des couleurs est essentielle dans diverses tâches de vision par ordinateur. Cet article aborde le défi spécifique de la détection d'objets rouges à l'aide de la bibliothèque OpenCV. En explorant l'espace colorimétrique HSV et en affinant les paramètres de seuil, nous visons à améliorer la détection d'un rectangle rouge dans une image.

Énoncé du problème

Étant donné une image avec un rectangle rouge, le but est d'isoler et de détecter l'objet rouge à l'aide de la fonction inRange d'OpenCV et de l'espace colorimétrique HSV. Cependant, les premières tentatives utilisant les plages de paramètres fournies n'ont pas donné de résultats satisfaisants.

Solution proposée : espace colorimétrique HSV

Dans l'espace HSV, la teinte rouge s'enroule autour du Valeur de 180 degrés. Par conséquent, pour détecter efficacement le rouge, nous devons prendre en compte les valeurs de [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;

En combinant ces deux masques, nous capturons la gamme de couleurs rouge avec plus de précision, comme le montrent les résultats améliorés.

Approche alternative : image HSV inversée

Une autre perspective sur ce problème consiste à inverser l'image BGR d'origine avant de la convertir en HSV. Dans l'image inversée, la couleur rouge devient cyan, ce qui la rend plus facile à détecter :

Mat3b bgr_inv = ~bgr;
cvtColor(bgr_inv, hsv_inv, COLOR_BGR2HSV);

inRange(hsv_inv, Scalar(90 - 10, 70, 50), Scalar(90 + 10, 255, 255), mask);

Cette approche nous permet de rechercher une seule couleur cible (cyan) dans l'image HSV inversée, offrant une alternative valable à l'approche à double plage.

Conclusion

En affinant les paramètres de détection des couleurs et en utilisant les propriétés spécifiques de l'espace colorimétrique HSV, nous pouvons améliorer considérablement la détection du rouge objets utilisant OpenCV. Les solutions fournies illustrent la polyvalence et l'efficacité d'OpenCV dans la gestion de scénarios difficiles de détection de couleurs.

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