Exemple #1
0
 public OpenCvTest()
 {
     InitializeComponent();
     _ipcImage       = IpcImageFileMapped.LoadFromFile(ImageUris.LargeBitmapBgr);
     _interopBitmap  = _ipcImage.GetInteropBitmap();
     ImageWpf.Source = _interopBitmap;
 }
        public void InteropBitmapMemoryDiagnostic()
        {
            List <double> memoryList = new List <double>();

            memoryList.Add(Process.GetCurrentProcess().WorkingSet64);

            IpcImageFileMapped ipcImage = IpcImageFileMapped.LoadFromFile(ImageUris.LargeBmp);

            GC.Collect(GC.MaxGeneration, GCCollectionMode.Forced, true);
            GC.WaitForPendingFinalizers();
            GC.Collect(GC.MaxGeneration, GCCollectionMode.Forced, true);
            memoryList.Add(Process.GetCurrentProcess().WorkingSet64);

            var pixelArray = new UInt32[2048 * 2048];

            memoryList.Add(Process.GetCurrentProcess().WorkingSet64);

            var random = new Random();

            for (uint i = 0; i < pixelArray.Length; i++)
            {
                pixelArray[i] = (uint)random.Next(Int32.MaxValue);
            }
            memoryList.Add(Process.GetCurrentProcess().WorkingSet64);


            var bitmap = ipcImage.GetInteropBitmap();

            memoryList.Add(Process.GetCurrentProcess().WorkingSet64);

            bitmap.CopyPixels(new Int32Rect(0, 0, 2048, 2048), pixelArray, ipcImage.Stride, 0);
            memoryList.Add(Process.GetCurrentProcess().WorkingSet64);

            bitmap.Invalidate();
            memoryList.Add(Process.GetCurrentProcess().WorkingSet64);
            GC.Collect(GC.MaxGeneration, GCCollectionMode.Forced, true);
            GC.WaitForPendingFinalizers();
            GC.Collect(GC.MaxGeneration, GCCollectionMode.Forced, true);
            for (var i = 0; i < 10; i++)
            {
                bitmap.Invalidate();
                bitmap.CopyPixels(new Int32Rect(0, 0, 2048, 2048), pixelArray, ipcImage.Stride, 0);
                memoryList.Add(Process.GetCurrentProcess().WorkingSet64);
            }

            Console.WriteLine("Initial: " + memoryList[0]);
            Console.WriteLine("Ipc Image: " + memoryList[1] + " : " + (memoryList[1] - memoryList[0]));
            Console.WriteLine("Array Init: " + memoryList[2] + " : " + (memoryList[2] - memoryList[1]));
            Console.WriteLine("ArrayFill: " + memoryList[3] + " : " + (memoryList[3] - memoryList[2]));
            Console.WriteLine("Bitmap: " + memoryList[4] + " : " + (memoryList[4] - memoryList[3]));
            Console.WriteLine("Copy: " + memoryList[5] + " : " + (memoryList[5] - memoryList[4]));
            Console.WriteLine("Invalidate: " + memoryList[6] + " : " + (memoryList[6] - memoryList[5]));
            Console.WriteLine("Loop: ");

            for (var i = 7; i < memoryList.Count; i++)
            {
                Console.WriteLine(memoryList[i] + " : " + (memoryList[i] - memoryList[i - 1]));
            }
        }
 public InteropGdi()
 {
     InitializeComponent();
     _ipcImage       = IpcImageFileMapped.LoadFromFile(ImageUris.LargeBitmapBgr);
     _interopBitmap  = _ipcImage.GetInteropBitmap();
     ImageWpf.Source = _interopBitmap;
     DrawGdiImage(null, null);
 }
 public WriteableBitmapTest()
 {
     InitializeComponent();
     _ipcImage        = IpcImageFileMapped.LoadFromFile(ImageUris.LargeBitmapBgr);
     _writeableBitmap = _ipcImage.GetWriteableBitmap();
     _graphics        = _ipcImage.GetGdiGraphics();
     Draw(null, null);
     TestImage.Source = _writeableBitmap;
 }
Exemple #5
0
        public void LoadImageTestBgr24()
        {
            IpcImageFileMapped ipcImage = IpcImageFileMapped.LoadFromFile(ImageUris.Bgr24);

            Console.WriteLine(ipcImage.Info());

            unsafe {
                byte *pointer = (byte *)ipcImage.DataPtr.ToPointer();
                for (int rowIndex = 0; rowIndex < ipcImage.Height; rowIndex++)
                {
                    for (int columnIndex = 0; columnIndex < ipcImage.Width * ipcImage.BytesPerPixel; columnIndex++)
                    {
                        var value = *(pointer + columnIndex + rowIndex * ipcImage.Stride);
                        if ((int)(columnIndex % ipcImage.BytesPerPixel) == 0)
                        {
                            Console.Write(" - ");
                        }
                        Console.Write(value + " ");

                        if (rowIndex == 0 && (columnIndex % 3) == 0)
                        {
                            Assert.AreEqual(0, value, "Black row failed.");
                        }
                        if (rowIndex == 1)
                        {
                            Assert.AreEqual(255, value, "White row failed.");
                        }
                        if (rowIndex == 4 && (columnIndex % 3) == 0)
                        {
                            Assert.AreEqual(127, value, "Blue row failed.");
                        }
                        if (rowIndex == 6 && ((columnIndex - 1) % 3) == 0)
                        {
                            Assert.AreEqual(127, value, "Green row failed.");
                        }
                        if (rowIndex == 8 && ((columnIndex - 2) % 3) == 0)
                        {
                            Assert.AreEqual(127, value, "Redd row failed.");
                        }
                        if (rowIndex == 9)
                        {
                            Assert.AreEqual(255, value, "Closing white row failed");
                        }
                    }
                    Console.Write("\n");
                }
            }
        }
Exemple #6
0
        public void LoadImageTestGrayScale8Bpp()
        {
            IpcImageFileMapped ipcImage = IpcImageFileMapped.LoadFromFile(ImageUris.Grayscale8Bpp);

            Console.WriteLine(ipcImage.Info());
            unsafe {
                byte *pointer = (byte *)ipcImage.DataPtr.ToPointer();
                for (int rowIndex = 0; rowIndex < ipcImage.Height; rowIndex++)
                {
                    for (int columnIndex = 0; columnIndex < ipcImage.Width * ipcImage.BytesPerPixel; columnIndex++)
                    {
                        var value = *(pointer + columnIndex + rowIndex * ipcImage.Stride);
                        if ((columnIndex % (int)ipcImage.BytesPerPixel) == 0)
                        {
                            Console.Write(" - ");
                        }
                        Console.Write(value + " ");

                        if (rowIndex == 0)
                        {
                            Assert.AreEqual(0, value, "Black row failed.");
                        }
                        if (rowIndex == 1)
                        {
                            Assert.AreEqual(50, value, "Grey50 row failed.");
                        }
                        if (rowIndex == 2)
                        {
                            Assert.AreEqual(100, value, "Grey100 row failed.");
                        }
                        if (rowIndex == 3)
                        {
                            Assert.AreEqual(150, value, "Grey150 row failed.");
                        }
                        if (rowIndex == 4)
                        {
                            Assert.AreEqual(200, value, "Grey200 row failed.");
                        }
                        if (rowIndex == 5)
                        {
                            Assert.AreEqual(255, value, "White row failed.");
                        }
                    }
                    Console.Write("\n");
                }
            }
        }
        public void WriteableBitmapTest()
        {
            IpcImageFileMapped ipcImage = IpcImageFileMapped.LoadFromFile(ImageUris.Bgr32);
            var bitmap     = ipcImage.GetWriteableBitmap();
            var pixelArray = new UInt32[50];

            bitmap.CopyPixels(new Int32Rect(0, 0, 5, 10), pixelArray, ipcImage.Stride, 0);

            for (var i = 0; i < 50; i++)
            {
                var value = pixelArray[i];
                if (i >= 0 && i < 5)
                {
                    Assert.AreEqual(0xFF000000, value);                     //row 0
                }
                if (i >= 5 && i < 10)
                {
                    Assert.AreEqual(0xFFFFFFFF, value);                   //row 1
                }
                if (i >= 20 && i < 25)
                {
                    Assert.AreEqual(0xFF01017F, value);                    // row 4
                }
                if (i >= 30 && i < 35)
                {
                    Assert.AreEqual(0xFF017F01, value);                    // row 6
                }
                if (i >= 40 && i < 45)
                {
                    Assert.AreEqual(0xFF7F0101, value);                    // row 8
                }
                if (i % 5 == 0)
                {
                    Console.WriteLine("\n");
                }
                Console.Write(value.ToString("X") + "-");
            }
        }
Exemple #8
0
        public void CreateMemorySectionTest()
        {
            IpcImageFileMapped ipcImage = IpcImageFileMapped.LoadFromFile(ImageUris.Bgr32);


            var brush = new System.Drawing.SolidBrush(Color.FromArgb(255, 2, 2, 2));

            ipcImage.GetGdiGraphics().FillRectangle(brush, new System.Drawing.Rectangle(0, 0, 5, 5));

            Console.WriteLine(ipcImage.Info());
            unsafe {
                byte *pointer = (byte *)ipcImage.DataPtr.ToPointer();
                for (int rowIndex = 0; rowIndex < ipcImage.Height; rowIndex++)
                {
                    for (int columnIndex = 0; columnIndex < ipcImage.Width * ipcImage.BytesPerPixel; columnIndex++)
                    {
                        var value = *(pointer + columnIndex + rowIndex * ipcImage.Stride);
                        if ((columnIndex % (int)ipcImage.BytesPerPixel) == 0)
                        {
                            Console.Write(" - ");
                        }
                        Console.Write(value + " ");

                        if (rowIndex >= 0 && rowIndex <= 4 && ((columnIndex + 1) % 4) != 0)
                        {
                            Assert.AreEqual(2, value, "Rows Failed");
                        }
                        if (rowIndex == 5)
                        {
                            Assert.AreEqual(255, value, "White Row Failed");
                        }
                    }
                    Console.Write("\n");
                }
            }
        }