Berechne den Mittelwert für Vektorpunkte

7

Ich habe einen Vektor von 2-dimensionalen Punkten in OpenCV

%Vor%

Ich möchte die Mittelwerte für x- und y-Koordinaten in points berechnen. Etwas wie:

%Vor%

Das wäre in Matlab einfach. Aber ich bin mir nicht sicher, ob ich einige High-Level-OpenCV-Funktionen verwenden kann, um das gleiche zu erreichen. Irgendwelche Vorschläge?

    
Alexey 19.07.2012, 18:44
quelle

4 Antworten

11

InputArray macht hier einen guten Job. Sie können einfach

anrufen %Vor%

Details:

In den neueren OpenCV-Versionen wird der Datentyp InputArray eingeführt. Auf diese Weise kann man entweder als Vektoren an eine OpenCV-Funktion entweder Matrizen (cv :: Mat) senden. A vector<Vec3f> wird als Float-Matrix mit drei Kanälen, einer Zeile und der Anzahl der Spalten gleich der Vektorgröße interpretiert. Da keine Daten kopiert werden, ist diese transparente Konvertierung sehr schnell.

Der Vorteil ist, dass Sie mit dem Datentyp arbeiten können, der in Ihrer App besser passt, während Sie trotzdem OpenCV-Funktionen verwenden können, um mathematische Operationen zu vereinfachen.

    
Sam 19.07.2012, 18:58
quelle
9

Da OpenCV Point_ bereits operator+ definiert, sollte dies ziemlich einfach sein. Zuerst summieren wir die Werte:

%Vor%

Dann teilen wir uns, um den Durchschnitt zu erhalten:

%Vor%

... oder wir könnten Point_ s operator* :

verwenden %Vor%

Leider definiert Point_ , so weit ich das sehen kann, nicht operator / , also müssen wir mit der Umkehrung multiplizieren, anstatt durch die Größe zu dividieren.

    
Jerry Coffin 19.07.2012 18:53
quelle
5

Sie können stl's std :: accumulate wie folgt verwenden:

%Vor%     
smocking 19.07.2012 18:57
quelle
0

Fügen Sie sie alle hinzu und dividieren Sie sie durch die Gesamtzahl der Punkte.

    
jrad 19.07.2012 18:51
quelle

Tags und Links