Verbesserung des Algorithmus zur Erkennung einer Coca-Cola-Dose im Bild
Hallo, Kollegen. Ich schreibe ein Programm zur Erkennung einer Coca-Cola-Dose auf Fotos mit OpenCV in C++. Die Idee ist einfach: Die Dose ist rot, zylindrisch und hat ein weißes Band. Ich verwende Farbfilterung (HSV), um rote Bereiche hervorzuheben, finde dann Konturen und approximiere sie mit Ellipsen. Das klingt logisch, aber es gibt ein großes Problem: Der Algorithmus funktioniert bei echten Aufnahmen extrem schlecht.
Hier ist mein aktueller Code:
```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);
// Füge auch die untere Grenze für Rot hinzu (von 160 bis 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