Avatar ·

Melhoria do algoritmo de reconhecimento de lata de Coca-Cola em imagem

Saudações, colegas. Estou escrevendo um programa para reconhecer latas de Coca-Cola em fotos usando OpenCV em C++. A ideia é simples: a lata é vermelha, cilíndrica, com uma faixa branca. Eu uso filtragem de cor (HSV) para destacar áreas vermelhas, depois encontro contornos e os aproximo por elipses. Parece lógico, mas há um grande problema: o algoritmo falha terrivelmente em fotos reais.\n\nAqui está meu código atual:\n\n```cpp\ncv::Mat hsv, mask;\ncv::cvtColor(img, hsv, cv::COLOR_BGR2HSV);\ncv::inRange(hsv, cv::Scalar(0, 100, 100), cv::Scalar(10, 255, 255), mask);\n// Também adiciono o limite inferior do vermelho (de 160 a 180)\ncv::Mat mask2;\ncv::inRange(hsv, cv::Scalar(160, 100, 100), cv::Scalar(180, 255, 255), mask2);\nmask = mask | mask2;\n\nstd::vector> contours;\ncv::findContours