OpenCV 2 Schwerpunkt
Ich bin auf der Suche den Schwerpunkt einer Kontur aber ich habe Probleme bei der Umsetzung der Beispiel-code in C++ (OpenCV 2.3.1). Kann jemand mir helfen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich bin auf der Suche den Schwerpunkt einer Kontur aber ich habe Probleme bei der Umsetzung der Beispiel-code in C++ (OpenCV 2.3.1). Kann jemand mir helfen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Finden Sie den Schwerpunkt einer Kontur, können Sie mit der Methode der Momente. Und Funktionen implementiert werden, OpenCV.
Schauen Sie sich diese Momente der Funktion (zentrale und räumliche Momente).
Unten code stammt aus der OpenCV 2.3 docs tutorial. Vollständigen code hier.
Auch checken Sie diese SOF, obwohl es in Python, es wäre nützlich. Es findet alle Parameter einer Kontur.
Wenn Sie die Maske der Kontur Bereich finden Sie die centroid-Position wie folgt:
Dieser Ansatz ist nützlich, wenn man die Maske aber nicht die Kontur. In diesem Fall wird die oben genannte Methode ist rechnerisch effizienter im Vergleich zur Nutzung
cv::findContours(...)
und dann Suche nach Messe-center.Hier ist die Quelle
Können Sie auch die folgenden algorithmen zu finden, ein Schwerpunkt:
Oder mit Hilfe von Opencv ist boundingRect:
Angesichts der Kontur-Punkte und die Formel von Wikipedia, der Schwerpunkt kann sehr effizient berechnet wie diese:
Hinweis:
gegen den Uhrzeigersinn um.
mag bequem sein, passen Sie die Art der
p
und den Rückgabewert inPoint2f
oderPoint2d
,und einen cast zu
float
oderdouble
dem Nenner der return-Anweisung.