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
No answers yet.
Connectez-vous pour laisser une réponse
Blogs
Les 10 meilleurs frameworks C# pour le développement web en 2025