Avatar ·

Mejora del algoritmo de reconocimiento de lata de Coca-Cola en imagen

Saludos, colegas. Estoy escribiendo un programa para reconocer una lata de Coca-Cola en fotografías usando OpenCV en C++. La idea es simple: la lata es roja, cilíndrica, con una cinta blanca. Utilizo filtrado de color (HSV) para resaltar áreas rojas, luego encuentro contornos y los aproximo a elipses. Parece lógico, pero hay un gran problema: el algoritmo falla terriblemente en imágenes reales. Aquí está mi código actual: ```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); // También agrego el límite inferior del rojo (de 160 a 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); // Verificación de la relación