当前位置: 首页>>代码示例>>C#>>正文


C# Pixel.Any方法代码示例

本文整理汇总了C#中Pixel.Any方法的典型用法代码示例。如果您正苦于以下问题:C# Pixel.Any方法的具体用法?C# Pixel.Any怎么用?C# Pixel.Any使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Pixel的用法示例。


在下文中一共展示了Pixel.Any方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: GetCorners

        private static Pixel[] GetCorners(Bitmap image, List<Pixel> square)
        {
            // top left, top right, bottom left, bottom right
            Pixel[] corners = new Pixel[4] { null, null, null, null };

            int offset = 5;
            List<KeyValuePair<Pixel, double>> keys = new List<KeyValuePair<Pixel, double>>();
            foreach (Pixel pixel in square)
            {
                List<Pixel> adj = GetNeighBours(image, pixel.GetX(), pixel.GetY());
                if (adj.Count == 4 &&
                    pixel.GetColor().Equals(adj.ElementAt(0).GetColor()) &&
                    pixel.GetColor().Equals(adj.ElementAt(1).GetColor()) &&
                    pixel.GetColor().Equals(adj.ElementAt(2).GetColor()) &&
                    pixel.GetColor().Equals(adj.ElementAt(3).GetColor()))
                {
                    continue;
                }

                double rank = 0;

                for (int x = Math.Max(0, pixel.GetX() - offset); x <= Math.Min(image.Width-1, pixel.GetX() + offset); x += 1)
                {
                    for (int y = Math.Max(0, pixel.GetY() - offset); y <= Math.Min(image.Height-1, pixel.GetY() + offset); y += 1)
                    {
                        if (image.GetPixel(x, y).Equals(pixel.GetColor()))
                        {
                            rank += 1;
                        }
                    }
                }

                keys.Add(new KeyValuePair<Pixel, double>(pixel, rank));
            }

            int i = 1;
            Pixel p;
            int minDistance = 6;
            IEnumerable<KeyValuePair<Pixel, double>> query = keys.OrderBy(x => x.Value);

            if (query.Count() == 1)
            {
                Console.WriteLine("Found isolated pixel at {0},{1}", query.ElementAt(0).Key.GetX(), query.ElementAt(0).Key.GetY());
                Console.ReadLine();
                Environment.Exit(1);
            }

            corners[0] = query.ElementAt(0).Key;

            p = query.ElementAt(i).Key;
            while (corners.Any(q => q != null && GetDistance(q, p) < minDistance))
            {
                i += 1;
                p = query.ElementAt(i).Key;
            }
            corners[1] = p;

            p = query.ElementAt(i).Key;
            while (corners.Any(q => q != null && GetDistance(q, p) < minDistance))
            {
                i += 1;
                p = query.ElementAt(i).Key;
            }
            corners[2] = p;

            p = query.ElementAt(i).Key;
            while (corners.Any(q => q != null && GetDistance(q, p) < minDistance))
            {
                i += 1;
                p = query.ElementAt(i).Key;
            }
            corners[3] = p;

            return corners;
        }
开发者ID:TheInvoker,项目名称:Card,代码行数:75,代码来源:SquareDetector.cs


注:本文中的Pixel.Any方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。