Avatar ·

Amélioration de l'algorithme de reconnaissance de la canette de Coca-Cola sur l'image

Bonjour, collègues. J'écris un programme pour reconnaître une canette de Coca-Cola sur des photos à l'aide d'OpenCV en C++. L'idée est simple : la canette est rouge, cylindrique, avec une bande blanche. J'utilise le filtrage des couleurs (HSV) pour isoler les zones rouges, puis je trouve les contours et je les approxime par des ellipses. Cela semble logique, mais il y a un gros problème : l'algorithme bugue terriblement sur les photos réelles. Voici mon code actuel : ```cpp cv::Mat hsv, mask; cv::cvtColor(img, hsv, cv::COLOR_BGR2HSV); cv::inRange(hsv, cv::Scalar(0, 100, 100), cv::Scalar(10, 255, 255), mask); // J'ajoute aussi la limite inférieure du rouge (de 160 à 180) cv::Mat mask2; cv::inRange(hsv, cv::Scalar(160, 100, 100), cv::Scalar(180, 255, 255), mask2); mask = mask | mask2; std::vector> contours; cv::findContours(mask, contours, cv::RETR_EXTERNAL, cv::CHAIN_APPROX_SIMPLE); for (auto& c : contours) { if (c.size() > 50) { cv::RotatedRect ellipse = cv::fitEllipse(c); // Vérification du rapport