/// <summary> /// shows the ideal rectified grid /// </summary> /// <param name="filename">raw image filename</param> /// <param name="overlay_grid">ideal rectified grid</param> /// <param name="output_filename">filename to save as</param> private static void ShowOverlayGrid(string filename, grid2D overlay_grid, string output_filename) { Bitmap bmp = (Bitmap)Bitmap.FromFile(filename); byte[] img = new byte[bmp.Width * bmp.Height * 3]; BitmapArrayConversions.updatebitmap(bmp, img); if (overlay_grid != null) { overlay_grid.ShowIntercepts(img, bmp.Width, bmp.Height, 255, 0, 0, 5, 0); } Bitmap output_bmp = new Bitmap(bmp.Width, bmp.Height, System.Drawing.Imaging.PixelFormat.Format24bppRgb); BitmapArrayConversions.updatebitmap_unsafe(img, output_bmp); if (output_filename.ToLower().EndsWith("jpg")) output_bmp.Save(output_filename, System.Drawing.Imaging.ImageFormat.Jpeg); if (output_filename.ToLower().EndsWith("bmp")) output_bmp.Save(output_filename, System.Drawing.Imaging.ImageFormat.Bmp); }
private static void ShowIdealGrid(Bitmap bmp, grid2D ideal_grid, CalibrationDot[,] grid, ref Bitmap output_bmp) { byte[] img = new byte[bmp.Width * bmp.Height * 3]; BitmapArrayConversions.updatebitmap(bmp, img); if (grid != null) { for (int grid_x = 0; grid_x < grid.GetLength(0); grid_x++) { for (int grid_y = 0; grid_y < grid.GetLength(1); grid_y++) { if (grid[grid_x, grid_y] != null) { drawing.drawCross(img, bmp.Width, bmp.Height, (int)grid[grid_x, grid_y].x, (int)grid[grid_x, grid_y].y, 1, 0,255,0,0); } } } } if (ideal_grid != null) ideal_grid.ShowIntercepts(img, bmp.Width, bmp.Height, 255,0,0, 3, 0); if (output_bmp == null) output_bmp = new Bitmap(bmp.Width, bmp.Height, System.Drawing.Imaging.PixelFormat.Format24bppRgb); BitmapArrayConversions.updatebitmap_unsafe(img, output_bmp); }