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; }
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"); } } }
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") + "-"); } }
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"); } } }