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>");
            }
        }
Esempio n. 2
0
        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();
            }
        }