迭代EmguCV中Mat的每个像素

时间:2018-05-16 06:37:15

标签: c# image-processing emgucv

我想使用C#将值分配给EmguCV中Mat的每个像素。我已经阅读了文档,但没有找到任何方法来做到这一点。我可以使用Image执行此操作,但我希望使用Mat执行此操作。那么,任何人都可以告诉我如何做到这一点。

1 个答案:

答案 0 :(得分:1)

在EmguCV中,您可以使用Data方法获取每个像素的值,但按照文档中的说明,您无法重新分配它。 我从您的问题中了解到,您希望将每个像素的颜色值设置为Mat类的变量。如果这是问题,您可以看到以下适合我的代码。

        Byte[,,] color = new Byte[256, 1, 3];
        int i = 0;
        for (double x = 0; x < palette.Rows;)
        {
            color[i, 0, 0] = palette.Data[(int)x, palette.Width / 2, 0];
            color[i, 0, 1] = palette.Data[(int)x, palette.Width / 2, 1];
            color[i, 0, 2] = palette.Data[(int)x, palette.Width / 2, 2];
            i++;
            x = x + 3.109;
        }
        Mat lut = new Mat(256, 1, DepthType.Cv8U, 3);
        lut.SetTo(color);

我在通过任何调色板对图像进行伪着色时使用了这种方法。我创建了一个3维数组并使用SetTo类的Mat方法,我将该数组分配给Mat。希望这会有所帮助。