2012-10-02 6 views
11

In der OpenCV-Spickzettel (C++), habe ich die Matrix Operation mean() gefunden. Wenn ich es verwenden:wie zu berechnen und cvMat Mittelwert

float myMatMean = mean(MyMat); 

bekomme ich den Fehler:

no suitable conversion function from "cv::Scalar" to "float" exists

Was kann ich tun, um diese Daten zu benutzen?

+14

'Mittelwert()' Rückkehr eine Variable vom Typ zu sein scheint 'cv :: Scalar' versuchen so' cv :: Scalar myMatMean = Mittelwert (MyMat); ' – hmjd

+0

Ich denke, Es funktioniert mit Doppel statt Float, wenn Sie sich nicht mit Scalar beschäftigen wollen. Aber Scalar gibt dir über alle Kanäle hinweg meinen Durchschlag – remi

Antwort

25

Danke. Das Problem war, dass myMat ein 2D-Bild war. Der Rückgabetyp war immer noch eine Scalar der Größe .

Die Lösung war

cv:Scalar tempVal = mean(myMat); 
float myMAtMean = tempVal.val[0]; 
+6

Jetzt akzeptiere einfach deine eigene Antwort und wir sind alle glücklich :) – TheBlastOne

+0

... und hmjd's Kommentar als Pay-Back für die Mühe abstimmen. –

+0

Hölle, ich werde es für dich tun ... –