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 ?
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!