private static void MeanFileRoutine_doWork(object sender, DoWorkEventArgs e) { List <List <float> > RGBList = new List <List <float> >(); float[] AvgRGBArr; Folder = new DirectoryInfo(imgDir); ImageInfo = Folder.GetFiles(); //totalImages for (int i = 0; i < ImageInfo.Length; i++) { Bitmap bmp = new Bitmap(String.Format(@"{0}\{1}", imgDir, ImageInfo[i].Name)); RGBList.Add(CntkBitmapExtensions.ExtractCHW(bmp)); MeanFileRoutine.ReportProgress(Convert.ToInt32((i + 1) * 100 / ImageInfo.Length)); } AvgRGBArr = new float[RGBList[0].Count]; // sum is [1, 3072] for (int j = 0; j < RGBList[0].Count; j++) { for (int i = 0; i < RGBList.Count; i++) { AvgRGBArr[j] += RGBList[i][j]; } } string[] AvgRGBArrString = new string[RGBList[0].Count]; // Save to arr for (int j = 0; j < RGBList[0].Count; j++) { AvgRGBArr[j] = (AvgRGBArr[j] / RGBList.Count); // AvgRGBList is [1, 3072] AvgRGBArrString[j] = string.Format("{0:E2}", AvgRGBArr[j]); } string str = String.Join(" ", AvgRGBArrString); // Save to xml string file_xml = saveDir + "\\Custom_mean.xml"; if (!File.Exists(file_xml)) { File.Create(file_xml).Dispose(); } using (StreamWriter sw1 = new StreamWriter(file_xml)) { sw1.WriteLine("<?xml version=\"1.0\" ?>"); sw1.WriteLine("<opencv_storage>"); sw1.WriteLine(" <Channel>3</Channel>"); sw1.WriteLine(" <Row>32</Row>"); sw1.WriteLine(" <Col>32</Col>"); sw1.WriteLine(" <MeanImg type_id=\"opencv-matrix\">"); sw1.WriteLine(" <rows>1</rows>"); sw1.WriteLine(" <cols>3072</cols>"); sw1.WriteLine(" <dt>f</dt>"); sw1.WriteLine(" <data>" + str + "</data>"); sw1.WriteLine(" </MeanImg>"); sw1.WriteLine("</opencv_storage>"); } }
private static void ResizingRoutine_doWork(object sender, DoWorkEventArgs e) { DirectoryInfo Folder = new DirectoryInfo(ImgDir); FileInfo[] ImageInfo = Folder.GetFiles().OrderBy(p => p.Name).ToArray(); TotalImages = ImageInfo.Length; for (int i = 0; i < TotalImages; i++) { Bitmap bm = new Bitmap(String.Format(@"{0}\{1}", ImgDir, ImageInfo[i].Name)); Bitmap rbm = bm; if (IsKeepRatio) { Image <Bgr, byte> grayBackground = new Image <Bgr, byte>(DesWidth, DesHeight); grayBackground.SetValue(new Bgr(Color.Gray)); // Set background color if (((double)bm.Width / (double)bm.Height) < ((double)DesWidth / (double)DesHeight)) { int rbm_w = bm.Width * (DesHeight / bm.Height); rbm = CntkBitmapExtensions.Resize(bm, rbm_w, DesHeight, true); Image <Bgr, byte> rbm_emgu = new Image <Bgr, byte>(rbm); rbm = ImgStiching.combine(grayBackground, rbm_emgu, new Point((DesWidth - rbm_w) / 2, 0)).ToBitmap(); } else { int rbm_h = bm.Height * (DesWidth / bm.Width); rbm = CntkBitmapExtensions.Resize(bm, DesWidth, rbm_h, true); Image <Bgr, byte> rbm_emgu = new Image <Bgr, byte>(rbm); rbm = ImgStiching.combine(grayBackground, rbm_emgu, new Point(0, (DesHeight - rbm_h) / 2)).ToBitmap(); } } else { rbm = CntkBitmapExtensions.Resize(bm, DesWidth, DesHeight, true); } if (IsDeleteOriginal) { File.Delete(String.Format(@"{0}\{1}", ImgDir, ImageInfo[i].Name)); } rbm.Save(SaveDir + $"\\res_{i:D5}.jpg"); // This will make it "00000" "00001"... bm.Dispose(); rbm.Dispose(); ResizingRoutine.ReportProgress(Convert.ToInt32((i + 1) * 100 / TotalImages)); //Thread.Sleep(1); CurrentImageIndex++; } }
private void LoadImg_DoWork(object sender, DoWorkEventArgs e) { for (int i = 0; i < totalImgNum; i++) { Bitmap bmp = new Bitmap(string.Format(@"{0}\{1}", sourceImgFolderArr[(int)jobType], sourceImageInfo[i].Name)); Bitmap bmp_resized = CntkBitmapExtensions.Resize(bmp, thumb_w, thumb_h, false); //Thread.Sleep(1); loadImgRoutine.ReportProgress(Convert.ToInt32((i + 1) * 100 / totalImgNum), new imgInfo() { index = i, image = bmp_resized }); bmp.Dispose(); //bmp_resized.Dispose(); } }
private void LoadImg_DoWork(object sender, DoWorkEventArgs e) { /// Load Actual Images for (int i = 0; i < totalImgNum; i++) { Bitmap bmp = new Bitmap(mImgInfoList[i].imagePath); Bitmap bmp_resized = CntkBitmapExtensions.Resize(bmp, thumb_w, thumb_h, false); //Thread.Sleep(1); loadImgRoutine.ReportProgress(Convert.ToInt32((i + 1) * 100 / totalImgNum), new indexedImg() { index = i, image = bmp_resized }); bmp.Dispose(); } }
private void ResizingRoutine_doWork(object sender, DoWorkEventArgs e) { resRandImgMapList.Clear(); var rand = new Random(); var randomList = sourceImgMapList.OrderBy(x => rand.Next()).ToList(); for (int i = 0; i < totalImgNum; i++) { Bitmap bm = null; try { bm = new Bitmap(randomList[i].dir); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } Bitmap rbm = CntkBitmapExtensions.Resize( bm, Convert.ToInt32(BindManager.BindMngr.ML_desWidth.value), Convert.ToInt32(BindManager.BindMngr.ML_desHeight.value), true); /// Redo dir, but keep the shuffled label imgMapStruct ims = new imgMapStruct() { dir = mlImgFolderArr[(int)jobType] + string.Format("\\{0:D5}.jpg", i), label = randomList[i].label }; resRandImgMapList.Add(ims); /// This is for creating mean file RGBList.Add(CntkBitmapExtensions.ExtractCHW(rbm)); if (jobType == JobType.train) { rbm = addPadding(rbm, 4); } rbm.Save(resRandImgMapList[i].dir); ResizingRoutine.ReportProgress(Convert.ToInt32((i + 1) * 100 / totalImgNum)); Thread.Sleep(1); bm.Dispose(); rbm.Dispose(); } }