获取所有形状内的所有坐标

时间:2018-10-15 06:45:47

标签: c# coordinates

我正在创建一个应用程序,为此,我必须找到任何freeshape的坐标。 我已尝试实现该功能,但无法识别所有坐标。

我在array中有形状边界的坐标值。

就像有任何形状一样,那么我该如何找出其中的所有坐标并将它们放在list<Point>中。

1 个答案:

答案 0 :(得分:1)

编辑:据我了解,您希望将形状的内部乘以与每个像素相对应的导热系数图。

我建议:

  • 填充形状的内部。 (请参阅图像处理库,例如AForge.NET。)
  • 将其与导热系数图进行逐元素乘法。 (请参阅数值库。)

结果是“温度”的热图。您可以根据需要进行进一步处理。


如果您不关心速度,请获取光栅化的输出,然后只需检查是否存在亮像素:

var img = /* some 2D array */;
var list = new List<Tuple<int, int>>();

foreach ((var row, var j) in img.Select((x, i) => Tuple.Create(x, i))) {
    foreach ((var pixel, var i) in row.Select((x, i) => Tuple.Create(x, i))) {
        if (pixel == 255) {
            list.Add(Tuple.Create(i, j));
        }
    }
}

也许是LINQ版本:

img
    .Select((r, j) => new {row = r, j = j})
    .Select((t, j) => t.row
        .Select((p, i) => new {p = p, i = i, j = j})
        .Where(t => t.p == 255)
        .Select(t => Tuple.Create(t.i, t.j)))
    .SelectMany(x => x);