2013-04-04 42 views
0
多通道矩陣值

我沒有找到任何解釋如何使用矩陣與一個以上的通道IM emgucv如何設置Emgucv

var matrixa = new Matrix<float>(usablePoints.Count, 1, 2); 

我與斯普利特()函數嘗試,但它沒」 T改變矩陣matrixA

var channels = matrixa.Split(); 
for (int i = 0; i < usablePoints.Count; ++i) 
{ 
    channels[0][i, 0] = usablePoints[i].X; 
    channels[1][i, 0] = usablePoints[i].Y; 
} 

我缺少什麼值?我如何操縱矩陣的值?

回答

3

如果你看看matrixa.Data,這將是一個float[,]與第一維對應的行,第二個是列和渠道合併成一個維度。 如果信道的數量是N,當前信道是n和當前列是m,第二維的索引j

j = m*N + n 

因此,對於您例如:

for (int i = 0; i < usablePoints.Count; ++i) 
{ 
    matrixa.Data[i, 0] = usablePoints[i].X; 
    matrixa.Data[i, 1] = usablePoints[i].Y; 
} 

應工作。

一個更復雜的例子:假設我們有3個通道,5列,並希望於2行,第4列和第3個通道的值設置爲1:

j = m*N + n = 3*3 + 2 = 11 
=> 
matrixa.Data[1, 11] = 1; 
+0

謝謝!有效 – user2245817 2013-04-16 12:48:19