Ich suche nach dem richtigen Satz von Algorithmen, um dieses Bildverarbeitungsproblem zu lösen:
Ich kann die Kontur mit OpenCV berechnen, aber da das Bild verzerrt ist, enthält es oft mehr als 4 Eckpunkte. Gibt es einen guten Approximationsalgorithmus (vorzugsweise mit OpenCV-Operationen), um die rechteckigen Eckpunkte mit dem Binärbild oder der Konturbeschreibung zu finden?
Das Bild sieht so aus:
Danke!
Dennis
Verwenden Sie die Funktion cvApproxPoly , um die Anzahl der Knoten Ihrer Kontur zu eliminieren, und filtern Sie dann die Konturen heraus, die vorhanden sind zu viele Knoten oder Winkel, die von 90 Grad stark abweichen. Siehe auch ähnliche Antwort
vector<Point> cardPoly;// Quad storage
int PolyLines = 0;//PolyPoly counter ;)
double simplicity = 0.5;//Increment of adjustment, lower numbers may be more precise vs. high numbers being faster to cycle.
while(PolyLines != 4)//Adjust this
{
approxPolyDP(transContours, Poly, simplicity, true);
PolyLines = Poly.size();
simplicity += 0.5;
}
Tags und Links opencv image-processing camera-calibration