【问题标题】:Iterate over each pixel of Mat in EmguCV在 EmguCV 中迭代 Mat 的每个像素
【发布时间】:2018-05-17 14:40:08
【问题描述】:

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

【问题讨论】:

    标签: c# image-processing emgucv


    【解决方案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 维数组并使用 Mat 类的 SetTo 方法,我刚刚将该数组分配给 Mat。希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2015-11-22
      • 2021-12-16
      • 2020-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多