2015-05-29 21 views
2

我有以下代碼:參數在meanStdDev功能

Scalar m; //Scalar is a class for a 4 variable vector. m is its instance.   
Scalar std; 
meanStdDev(hist, m, std); 

它運作良好,但它並不適用於以下工作。

vector <float> m; 
vector <float> std; 
meanStdDev(hist, m, std); 

我不能爲了解這裏的問題也是我創建一個載體,就像在標量的情況。請解釋。

回答

4

2問題在這裏:

1)它需要一個固定大小的東西。

2)你的載體最初是空

你可以使用一個標量,一個(預分配的)墊,或Vec4d,但一個std :: vector的。

Mat hist(10,1,CV_32F); 
randu(hist,1,100); 

cerr << hist << endl; 

{ 
    Scalar m, stdv; 

    meanStdDev(hist, m, stdv); 
    cerr << m << " " << stdv << endl; 
} 

{ 
    Mat m(1,4,CV_64F),stdv(1,4,CV_64F); 

    meanStdDev(hist, m, stdv); 
    cerr << m << " " << stdv << endl; 
} 

{ 
    Vec4d m,stdv; 

    meanStdDev(hist, m, stdv); 
    cerr << m << " " << stdv << endl; 
} 


[53.497997; 
20.72666; 
40.704884; 
81.624123; 
44.276165; 
25.63018; 
77.537399; 
76.447281; 
31.471653; 
70.540741] 
[52.2457, 0, 0, 0] [21.8056, 0, 0, 0] 
[52.245703125] [21.80564409388921] 
[52.2457, 0, 0, 0] [21.8056, 0, 0, 0] 
+0

理解你的第一點,但不是第二個塊,因爲在你的第二個塊Mat m(1,4,CV_64F)也是一個空向量。 – Navdeep

+0

不,它有4個(未初始化的)元素,你的向量沒有。 – berak

+0

好的感謝您的好解釋。 – Navdeep