我没有找到任何解释如何使用具有多个通道的矩阵的任何解释
var matrixa = new Matrix<float>(usablePoints.Count, 1, 2);
我尝试了Split()函数,但它没有更改矩阵的值
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.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列,并且想要将第二行,第四列和第三通道的值设置为1:
j = m*N + n = 3*3 + 2 = 11
=>
matrixa.Data[1, 11] = 1;
关于c# - 如何在Emgucv中设置多 channel 矩阵的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15816710/