2013-04-04 40 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