【问题标题】:Spiral loop for image pixel analyze (x,y) C#用于图像像素分析的螺旋循环 (x,y) C#
【发布时间】:2021-05-05 15:56:22
【问题描述】:

我正在尝试在坐标 (x,y) 中进行像素搜索

我需要一个函数(int width, int height),它返回从中心开始的点数组。

如果图像有 1000x1000,我需要得到 [{500,500}, {501,500}, {501,501}, {500,501}, {499,501}, {499,500} ...]

例子:

【问题讨论】:

  • 所以,偏移量是 x=1, y=1, x=-2, y=-2, x=3 ,y=3, x=-4, y=-4.. . 很确定你可以从那里找出模式。 :)

标签: c# image search pixel spiral


【解决方案1】:

嗯,这比我想象的要容易。

static IEnumerable<Point> GetPixels(int size)
{
    Point point = new Point(size/2, size/2);

    yield return point;
    int sign = 1;
    for (int row = 1; row < size; row++)
    {
        // move right/left by row, and then up/down by row
        for (int k = 0; k < row; k++)
        {
            point.Offset(sign*1, 0);
            yield return point;
        }
        for (int k = 0; k < row; k++)
        {
            point.Offset(0, -sign*1);
            yield return point;
        }
        sign *= -1;
    }
    // last leg to finish filling the area
    for (int k = 0; k < size-1; k++)
    {
        point.Offset(sign*1, 0);
        yield return point;
    }

}

结果(size=5

{X=2,Y=2}
{X=3,Y=2}
{X=3,Y=1}
{X=2,Y=1}
{X=1,Y=1}
{X=1,Y=2}
{X=1,Y=3}
{X=2,Y=3}
{X=3,Y=3}
{X=4,Y=3}
{X=4,Y=2}
{X=4,Y=1}
{X=4,Y=0}
{X=3,Y=0}
{X=2,Y=0}
{X=1,Y=0}
{X=0,Y=0}
{X=0,Y=1}
{X=0,Y=2}
{X=0,Y=3}
{X=0,Y=4}
{X=1,Y=4}
{X=2,Y=4}
{X=3,Y=4}
{X=4,Y=4}

或以图形方式表示size=50

测试代码够简单

static void Main(string[] args)
{
    foreach (var point in GetPixels(5))
    {
        Console.WriteLine($"{point}");
    }

    Console.WriteLine();
}

【讨论】:

  • 非常感谢,我什至设法做到了,但你的方法比我的好..谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-05-09
  • 2021-12-02
  • 1970-01-01
  • 2010-09-28
  • 1970-01-01
  • 2013-02-17
相关资源
最近更新 更多