Esempio n. 1
0
            public RgbAlphaPixel Operator(string str)
            {
                if (this._Colors.TryGetValue(str, out var value))
                {
                    return(value);
                }

                var pix = new HsiPixel
                {
                    H = Reverse((byte)this._Colors.Count),
                    S = byte.MaxValue,
                    I = 150
                };

                var result = new RgbAlphaPixel();

                Dlib.AssignPixel(ref result, pix);
                this._Colors[str] = result;
                return(result);
            }
Esempio n. 2
0
        public void GetRowColumn()
        {
            const int width  = 150;
            const int height = 100;

            var tests = new[]
            {
                new { Type = ImageTypes.RgbPixel, ExpectResult = true },
                new { Type = ImageTypes.RgbAlphaPixel, ExpectResult = true },
                new { Type = ImageTypes.UInt8, ExpectResult = true },
                new { Type = ImageTypes.UInt16, ExpectResult = true },
                new { Type = ImageTypes.UInt32, ExpectResult = true },
                new { Type = ImageTypes.Int8, ExpectResult = true },
                new { Type = ImageTypes.Int16, ExpectResult = true },
                new { Type = ImageTypes.Int32, ExpectResult = true },
                new { Type = ImageTypes.HsiPixel, ExpectResult = true },
                new { Type = ImageTypes.Float, ExpectResult = true },
                new { Type = ImageTypes.Double, ExpectResult = true }
            };

            foreach (var test in tests)
            {
                var array2D = CreateArray2D(test.Type, height, width);
                switch (array2D.ImageType)
                {
                case ImageTypes.UInt8:
                {
                    var array = (Array2D <byte>)array2D;
                    Dlib.AssignAllPpixels(array, 255);
                    using (var row = array[0])
                        Assert.AreEqual(row[0], 255, "Array<byte> failed");
                }
                break;

                case ImageTypes.UInt16:
                {
                    var array = (Array2D <ushort>)array2D;
                    Dlib.AssignAllPpixels(array, 255);
                    using (var row = array[0])
                        Assert.AreEqual(row[0], 255, "Array<ushort> failed");
                }
                break;

                case ImageTypes.UInt32:
                {
                    var array = (Array2D <uint>)array2D;
                    Dlib.AssignAllPpixels(array, 255);
                    using (var row = array[0])
                        Assert.AreEqual(row[0], 255u, "Array<uint> failed");
                }
                break;

                case ImageTypes.Int8:
                {
                    var array = (Array2D <sbyte>)array2D;
                    Dlib.AssignAllPpixels(array, 127);
                    using (var row = array[0])
                        Assert.AreEqual(row[0], 127, "Array<sbyte> failed");
                }
                break;

                case ImageTypes.Int16:
                {
                    var array = (Array2D <short>)array2D;
                    Dlib.AssignAllPpixels(array, 255);
                    using (var row = array[0])
                        Assert.AreEqual(row[0], 255, "Array<short> failed");
                }
                break;

                case ImageTypes.Int32:
                {
                    var array = (Array2D <int>)array2D;
                    Dlib.AssignAllPpixels(array, 255);
                    using (var row = array[0])
                        Assert.AreEqual(row[0], 255, "Array<int> failed");
                }
                break;

                case ImageTypes.Float:
                {
                    var array = (Array2D <float>)array2D;
                    Dlib.AssignAllPpixels(array, 255);
                    using (var row = array[0])
                        Assert.AreEqual(row[0], 255, "Array<float> failed");
                }
                break;

                case ImageTypes.Double:
                {
                    var array = (Array2D <double>)array2D;
                    Dlib.AssignAllPpixels(array, 255);
                    using (var row = array[0])
                        Assert.AreEqual(row[0], 255, "Array<double> failed");
                }
                break;

                case ImageTypes.RgbPixel:
                {
                    var array = (Array2D <RgbPixel>)array2D;
                    var pixel = new RgbPixel
                    {
                        Red   = 255,
                        Blue  = 255,
                        Green = 255
                    };

                    Dlib.AssignAllPpixels(array, pixel);
                    using (var row = array[0])
                    {
                        var t = row[0];
                        Assert.AreEqual(t.Red, 255, "Array<RgbPixel> failed");
                        Assert.AreEqual(t.Blue, 255, "Array<RgbPixel> failed");
                        Assert.AreEqual(t.Green, 255, "Array<RgbPixel> failed");
                    }
                }
                break;

                case ImageTypes.RgbAlphaPixel:
                {
                    var array = (Array2D <RgbAlphaPixel>)array2D;
                    var pixel = new RgbAlphaPixel
                    {
                        Red   = 255,
                        Blue  = 255,
                        Green = 255,
                        Alpha = 255
                    };

                    Dlib.AssignAllPpixels(array, pixel);
                    using (var row = array[0])
                    {
                        var t = row[0];
                        Assert.AreEqual(t.Red, 255, "Array<RgbAlphaPixel> failed");
                        Assert.AreEqual(t.Blue, 255, "Array<RgbAlphaPixel> failed");
                        Assert.AreEqual(t.Green, 255, "Array<RgbAlphaPixel> failed");
                        Assert.AreEqual(t.Alpha, 255, "Array<RgbAlphaPixel> failed");
                    }
                }
                break;

                case ImageTypes.HsiPixel:
                {
                    var array = (Array2D <HsiPixel>)array2D;
                    var pixel = new HsiPixel
                    {
                        H = 255,
                        S = 255,
                        I = 255
                    };

                    Dlib.AssignAllPpixels(array, pixel);
                    using (var row = array[0])
                    {
                        var t = row[0];
                        Assert.AreEqual(t.H, 255, "Array<HsiPixel> failed");
                        Assert.AreEqual(t.S, 255, "Array<HsiPixel> failed");
                        Assert.AreEqual(t.I, 255, "Array<HsiPixel> failed");
                    }
                }
                break;

                default:
                    throw new ArgumentOutOfRangeException(nameof(array2D.ImageType), array2D.ImageType, null);
                }
                this.DisposeAndCheckDisposedState(array2D);
            }
        }
Esempio n. 3
0
        public void LoadImageData2()
        {
            const int cols  = 512;
            const int rows  = 512;
            const int steps = 512;

            var tests = new[]
            {
                new { Type = ImageTypes.UInt8, ExpectResult = true },
                new { Type = ImageTypes.UInt16, ExpectResult = true },
                new { Type = ImageTypes.Int16, ExpectResult = true },
                new { Type = ImageTypes.Int32, ExpectResult = true },
                new { Type = ImageTypes.HsiPixel, ExpectResult = true },
                new { Type = ImageTypes.RgbPixel, ExpectResult = true },
                new { Type = ImageTypes.RgbAlphaPixel, ExpectResult = true },
                new { Type = ImageTypes.Float, ExpectResult = true },
                new { Type = ImageTypes.Double, ExpectResult = true }
            };

            var random = new Random(0);

            foreach (var test in tests)
            {
                TwoDimentionObjectBase image;
                using (var win = new ImageWindow())
                {
                    switch (test.Type)
                    {
                    case ImageTypes.UInt8:
                    {
                        var data = new byte[rows * cols];
                        for (var r = 0; r < rows; r++)
                        {
                            for (var c = 0; c < cols; c++)
                            {
                                data[steps * r + c] = (byte)random.Next(0, 255);
                            }
                        }

                        image = Dlib.LoadImageData <byte>(data, rows, cols, steps);

                        if (this.CanGuiDebug)
                        {
                            win.SetImage((Array2D <byte>)image);
                            win.WaitUntilClosed();
                        }
                    }
                    break;

                    case ImageTypes.UInt16:
                    {
                        var data = new ushort[rows * cols];
                        for (var r = 0; r < rows; r++)
                        {
                            for (var c = 0; c < cols; c++)
                            {
                                data[steps * r + c] = (ushort)random.Next(0, 255);
                            }
                        }

                        image = Dlib.LoadImageData <ushort>(data, rows, cols, steps);

                        if (this.CanGuiDebug)
                        {
                            win.SetImage((Array2D <ushort>)image);
                            win.WaitUntilClosed();
                        }
                    }
                    break;

                    case ImageTypes.Int16:
                    {
                        var data = new short[rows * cols];
                        for (var r = 0; r < rows; r++)
                        {
                            for (var c = 0; c < cols; c++)
                            {
                                data[steps * r + c] = (short)random.Next(0, 255);
                            }
                        }

                        image = Dlib.LoadImageData <short>(data, rows, cols, steps);

                        if (this.CanGuiDebug)
                        {
                            win.SetImage((Array2D <short>)image);
                            win.WaitUntilClosed();
                        }
                    }
                    break;

                    case ImageTypes.Int32:
                    {
                        var data = new int[rows * cols];
                        for (var r = 0; r < rows; r++)
                        {
                            for (var c = 0; c < cols; c++)
                            {
                                data[steps * r + c] = random.Next(0, 255);
                            }
                        }

                        image = Dlib.LoadImageData <int>(data, rows, cols, steps);

                        if (this.CanGuiDebug)
                        {
                            win.SetImage((Array2D <int>)image);
                            win.WaitUntilClosed();
                        }
                    }
                    break;

                    case ImageTypes.Float:
                    {
                        var data = new float[rows * cols];
                        for (var r = 0; r < rows; r++)
                        {
                            for (var c = 0; c < cols; c++)
                            {
                                data[steps * r + c] = (float)random.NextDouble();
                            }
                        }

                        image = Dlib.LoadImageData <float>(data, rows, cols, steps);

                        if (this.CanGuiDebug)
                        {
                            win.SetImage((Array2D <float>)image);
                            win.WaitUntilClosed();
                        }
                    }
                    break;

                    case ImageTypes.Double:
                    {
                        var data = new double[rows * cols];
                        for (var r = 0; r < rows; r++)
                        {
                            for (var c = 0; c < cols; c++)
                            {
                                data[steps * r + c] = (double)random.NextDouble();
                            }
                        }

                        image = Dlib.LoadImageData <double>(data, rows, cols, steps);

                        if (this.CanGuiDebug)
                        {
                            win.SetImage((Array2D <double>)image);
                            win.WaitUntilClosed();
                        }
                    }
                    break;

                    case ImageTypes.HsiPixel:
                    {
                        var data = new HsiPixel[rows * cols];
                        for (var r = 0; r < rows; r++)
                        {
                            for (var c = 0; c < cols; c++)
                            {
                                data[steps * r + c] = new HsiPixel
                                {
                                    H = (byte)random.Next(0, 255),
                                    S = (byte)random.Next(0, 255),
                                    I = (byte)random.Next(0, 255)
                                }
                            }
                        }
                        ;

                        image = Dlib.LoadImageData <HsiPixel>(data, rows, cols, steps);

                        if (this.CanGuiDebug)
                        {
                            win.SetImage((Array2D <HsiPixel>)image);
                            win.WaitUntilClosed();
                        }
                    }
                    break;

                    case ImageTypes.RgbPixel:
                    {
                        var data = new RgbPixel[rows * cols];
                        for (var r = 0; r < rows; r++)
                        {
                            for (var c = 0; c < cols; c++)
                            {
                                data[steps * r + c] = new RgbPixel
                                {
                                    Red   = (byte)random.Next(0, 255),
                                    Green = (byte)random.Next(0, 255),
                                    Blue  = (byte)random.Next(0, 255)
                                }
                            }
                        }
                        ;

                        image = Dlib.LoadImageData <RgbPixel>(data, rows, cols, steps);

                        if (this.CanGuiDebug)
                        {
                            win.SetImage((Array2D <RgbPixel>)image);
                            win.WaitUntilClosed();
                        }
                    }
                    break;

                    case ImageTypes.RgbAlphaPixel:
                    {
                        var data = new RgbAlphaPixel[rows * cols];
                        for (var r = 0; r < rows; r++)
                        {
                            for (var c = 0; c < cols; c++)
                            {
                                data[steps * r + c] = new RgbAlphaPixel
                                {
                                    Red   = (byte)random.Next(0, 255),
                                    Green = (byte)random.Next(0, 255),
                                    Blue  = (byte)random.Next(0, 255),
                                    Alpha = (byte)random.Next(0, 255)
                                }
                            }
                        }
                        ;

                        image = Dlib.LoadImageData <RgbAlphaPixel>(data, rows, cols, steps);

                        if (this.CanGuiDebug)
                        {
                            win.SetImage((Array2D <RgbAlphaPixel>)image);
                            win.WaitUntilClosed();
                        }
                    }
                    break;

                    default:
                        throw new ArgumentOutOfRangeException();
                    }
                }

                Assert.AreEqual(image.Columns, cols, $"Failed to load {test.Type}.");
                Assert.AreEqual(image.Rows, rows, $"Failed to load {test.Type}.");

                this.DisposeAndCheckDisposedState(image);
            }
        }
Esempio n. 4
0
        public void Indexer3()
        {
            try
            {
                using (var matrix = new Matrix <byte>(1, 3))
                {
                    for (var index = 0; index < 3; index++)
                    {
                        var v = (byte)(index);
                        matrix[index] = v;
                        Assert.AreEqual(v, matrix[index]);
                    }
                }
            }
            catch (Exception)
            {
                Assert.Fail($"Failed to access for Type: {typeof(byte)}");
            }
            try
            {
                using (var matrix = new Matrix <ushort>(1, 3))
                {
                    for (var index = 0; index < 3; index++)
                    {
                        var v = (ushort)(index);
                        matrix[index] = v;
                        Assert.AreEqual(v, matrix[index]);
                    }
                }
            }
            catch (Exception)
            {
                Assert.Fail($"Failed to access for Type: {typeof(ushort)}");
            }

            try
            {
                using (var matrix = new Matrix <uint>(1, 3))
                {
                    for (var index = 0; index < 3; index++)
                    {
                        var v = (uint)(index);
                        matrix[index] = v;
                        Assert.AreEqual(v, matrix[index]);
                    }
                }
            }
            catch (Exception)
            {
                Assert.Fail($"Failed to access for Type: {typeof(uint)}");
            }

            try
            {
                using (var matrix = new Matrix <sbyte>(1, 3))
                {
                    for (var index = 0; index < 3; index++)
                    {
                        var v = (sbyte)(index);
                        matrix[index] = v;
                        Assert.AreEqual(v, matrix[index]);
                    }
                }
            }
            catch (Exception)
            {
                Assert.Fail($"Failed to access for Type: {typeof(sbyte)}");
            }

            try
            {
                using (var matrix = new Matrix <short>(1, 3))
                {
                    for (var index = 0; index < 3; index++)
                    {
                        var v = (short)(index);
                        matrix[index] = v;
                        Assert.AreEqual(v, matrix[index]);
                    }
                }
            }
            catch (Exception)
            {
                Assert.Fail($"Failed to access for Type: {typeof(short)}");
            }

            try
            {
                using (var matrix = new Matrix <int>(1, 3))
                {
                    for (var index = 0; index < 3; index++)
                    {
                        var v = (int)(index);
                        matrix[index] = v;
                        Assert.AreEqual(v, matrix[index]);
                    }
                }
            }
            catch (Exception)
            {
                Assert.Fail($"Failed to access for Type: {typeof(int)}");
            }

            try
            {
                using (var matrix = new Matrix <float>(1, 3))
                {
                    for (var index = 0; index < 3; index++)
                    {
                        var v = (float)(index);
                        matrix[index] = v;
                        Assert.AreEqual(v, matrix[index]);
                    }
                }
            }
            catch (Exception)
            {
                Assert.Fail($"Failed to access for Type: {typeof(float)}");
            }

            try
            {
                using (var matrix = new Matrix <double>(1, 3))
                {
                    for (var index = 0; index < 3; index++)
                    {
                        var v = (double)(index);
                        matrix[index] = v;
                        Assert.AreEqual(v, matrix[index]);
                    }
                }
            }
            catch (Exception)
            {
                Assert.Fail($"Failed to access for Type: {typeof(double)}");
            }

            try
            {
                using (var matrix = new Matrix <RgbPixel>(1, 3))
                    for (var index = 0; index < 3; index++)
                    {
                        var b = (byte)(index);
                        var v = new RgbPixel {
                            Red = b, Blue = b, Green = b
                        };
                        matrix[index] = v;
                        Assert.AreEqual(v.Red, matrix[index].Red);
                        Assert.AreEqual(v.Blue, matrix[index].Blue);
                        Assert.AreEqual(v.Green, matrix[index].Green);
                    }
            }
            catch (Exception)
            {
                Assert.Fail($"Failed to access for Type: {typeof(RgbPixel)}");
            }

            try
            {
                using (var matrix = new Matrix <RgbAlphaPixel>(1, 3))
                    for (var index = 0; index < 3; index++)
                    {
                        var b = (byte)(index);
                        var v = new RgbAlphaPixel {
                            Red = b, Blue = b, Green = b
                        };
                        matrix[index] = v;
                        Assert.AreEqual(v.Red, matrix[index].Red);
                        Assert.AreEqual(v.Blue, matrix[index].Blue);
                        Assert.AreEqual(v.Green, matrix[index].Green);
                    }
            }
            catch (Exception)
            {
                Assert.Fail($"Failed to access for Type: {typeof(RgbPixel)}");
            }

            try
            {
                using (var matrix = new Matrix <HsiPixel>(1, 3))
                    for (var index = 0; index < 3; index++)
                    {
                        var b = (byte)(index);
                        var v = new HsiPixel {
                            H = b, S = b, I = b
                        };
                        matrix[index] = v;
                        Assert.AreEqual(v.H, matrix[index].H);
                        Assert.AreEqual(v.S, matrix[index].S);
                        Assert.AreEqual(v.I, matrix[index].I);
                    }
            }
            catch (Exception)
            {
                Assert.Fail($"Failed to access for Type: {typeof(HsiPixel)}");
            }
        }