如何在Emgucv中设置多通道矩阵的值

时间:2013-04-04 16:29:39

标签: c# opencv emgucv

我没有找到任何解释如何使用具有多个通道的矩阵im emgucv

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

我尝试使用Split()函数,但它没有更改 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;
}

我错过了什么?我如何操纵matrixa的值?

1 个答案:

答案 0 :(得分: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;