Verbesserung des Erkennungsalgorithmus für Coca-Cola-Dosen: Wie kann die Genauigkeit erhöht werden?
Hallo zusammen! Ich bin ein Anfänger C++-Entwickler und arbeite an einem Projekt zur Erkennung von Coca-Cola-Dosen in Bildern. Ich verwende OpenCV. Derzeit habe ich einen einfachen Algorithmus, der Konturen sucht und versucht, sie anhand von Farbe und Form mit einer Referenz abzugleichen. Aber die Genauigkeit ist schrecklich – in einer Teststichprobe von 50 Bildern werden nur 30-40% der Dosen korrekt erkannt. Probleme treten bei unterschiedlicher Beleuchtung, Drehungen der Dose, Vorhandensein von Glanzlichtern oder teilweiser Überlappung auf.
Hier ist mein aktueller Code (vereinfacht):
```cpp
#include
#include
int main() {
cv::Mat img = cv::imread("test.jpg");
cv::Mat hsv;
cv::cvtColor(img, hsv, cv::COLOR_BGR2HSV);
// Masken für die rote Farbe der Dose (zwei Bereiche aufgrund der HSV-Eigenschaften)
cv::Mat mask1, mask2;
cv::inRange(hsv, cv::Scalar(0, 70, 50), cv::Scalar(10, 255, 255), mask1);
cv::inRange(hsv, cv::Scalar(170, 70, 50), cv::Scalar(180, 255, 255), mask2);
cv::Mat mask = mask1 | mask2;
// Kontursuche
}