示例#1
0
        public void FillPolygonTests7()
        {
            var dimX = 5;
            var dimY = 5;

            var expectedArray = new byte[]
            {
                0, 1, 1, 0, 0,
                1, 1, 1, 1, 0,
                1, 1, 1, 1, 1,
                1, 1, 0, 1, 0,
                0, 0, 0, 0, 0,
            };

            var volume2D = new Volume2D <byte>(expectedArray, 5, 5, 1, 1, new Point2D(), new Matrix2());

            var extractContour = ExtractContours.PolygonsFilled(volume2D);

            var output1 = new byte[dimX * dimY];
            var polygon = extractContour.First().Points.Select(x => CreatePoint(x.X + 0.00002, x.Y - 0.00001)).ToArray();

            FillPolygon.Fill(polygon, output1, dimX, dimY, 0, 0, (byte)1);

            for (var i = 0; i < output1.Length; i++)
            {
                Assert.AreEqual(expectedArray[i], output1[i]);
            }
        }
示例#2
0
        public void FillPolygonTestsRandomCheckTermination()
        {
            var dimX = 2000;

            int seed = Guid.NewGuid().GetHashCode();

            Console.WriteLine($"Seed {seed}");
            var random = new Random(seed);


            var byteArray = Enumerable.Range(0, dimX * dimX).Select(_ => (byte)random.Next(0, 2)).ToArray();

            var volume2D = new Volume2D <byte>(byteArray, dimX, dimX, 1, 1, new Point2D(), new Matrix2());

            var extractContour = ExtractContours.PolygonsFilled(volume2D);

            Console.WriteLine($"Contours count {extractContour.Count}");

            Assert.IsTrue(extractContour.Count > 0);
        }