Introduction
Lors de la détection de la couleur rouge à l'aide d'OpenCV et de la couleur HSV espace, il peut être difficile d’obtenir des résultats satisfaisants. Cependant, en explorant diverses approches et ajustements de paramètres, des améliorations significatives peuvent être apportées.
Problème
Pour améliorer la détection d'un rectangle rouge dans une image, le code suivant a été utilisé :
#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); }
Malgré l'ajustement des valeurs HSV à l'aide de barres de suivi dynamiques, les résultats optimaux restent insaisissable.
Solutions
1. Plage de valeurs de teinte étendue :
Dans l'espace HSV, la couleur rouge s'enroule autour de 180. Par conséquent, pour capturer complètement toute la gamme de rouge, la valeur de teinte (H) doit prendre en compte à 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);
2. Inversion de l'image et détection du cyan :
Alternativement, une approche intéressante consiste à :
Cette méthode détecte efficacement le complément du rouge (cyan) avec une seule plage en 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);
Conclusion
En incorporant ces techniques améliorées, OpenCV peut détecter efficacement la couleur rouge avec une plus grande précision. Ces approches fournissent une base solide pour d'autres optimisations et applications dans divers scénarios de traitement d'images.
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!