/// <summary> /// Convert Emgu.CV.Structure.Bgr to double[] /// </summary> /// <remarks>Alpha is set to one.</remarks> /// <param name="c">Color</param> /// <returns>double[]</returns> public static double[] ToInterop(this Emgu.CV.Structure.Bgr c) { return(new double[] { c.Red / 255.0, c.Green / 255.0, c.Blue / 255.0, 1.0 }); }
private static void GrayValueTask() { while (true) { while (m_CheckList.Count > 0) { DataGridViewRow t_Checks = m_CheckList[0]; lock (m_Mutex) { string t_FolderPath = t_Checks.Cells["FolderPath"].Value.ToString(); string[] t_ImageFiles = System.IO.Directory.GetFiles(t_FolderPath); foreach (string t_ImageFile in t_ImageFiles) { string[] t_ImageFileSplit = System.IO.Path.GetFileNameWithoutExtension(t_ImageFile).Split('_'); string t_StationNumber = t_ImageFileSplit[2]; if (t_ImageFileSplit[2].CompareTo("15") == 0) { t_StationNumber = t_ImageFileSplit[2] + "_" + t_ImageFileSplit[3]; } string t_StationName = m_ImageNameMappings[t_StationNumber]; Point[] t_ROI = m_FixROILocations[t_StationName]; System.Drawing.Bitmap t_Bitmap = new Bitmap(t_ImageFile); Emgu.CV.Mat t_Mat = Emgu.CV.CvInvoke.Imread(t_ImageFile, Emgu.CV.CvEnum.ImreadModes.AnyColor); //Emgu.CV.CvInvoke.NamedWindow("A", Emgu.CV.CvEnum.NamedWindowType.FreeRatio); double t_Average = 0.0; if (t_Bitmap.PixelFormat == System.Drawing.Imaging.PixelFormat.Format8bppIndexed) { Emgu.CV.Image <Emgu.CV.Structure.Gray, byte> t_Image = new Emgu.CV.Image <Emgu.CV.Structure.Gray, byte>(t_Mat.Bitmap); t_Image.ROI = new Rectangle(t_ROI[0].X, t_ROI[0].Y, t_ROI[1].X - t_ROI[0].X, t_ROI[1].Y - t_ROI[0].Y); Emgu.CV.Structure.Gray t_AverageBGR = t_Image.GetAverage(); t_Average = t_AverageBGR.MCvScalar.V0; t_Image.Dispose(); t_Image = null; } else { Emgu.CV.Image <Emgu.CV.Structure.Bgr, byte> t_Image = new Emgu.CV.Image <Emgu.CV.Structure.Bgr, byte>(t_Mat.Bitmap); t_Image.ROI = new Rectangle(t_ROI[0].X, t_ROI[0].Y, t_ROI[1].X - t_ROI[0].X, t_ROI[1].Y - t_ROI[0].Y); Emgu.CV.Structure.Bgr t_AverageBGR = t_Image.GetAverage(); t_Average = t_AverageBGR.MCvScalar.V2; t_Image.Dispose(); t_Image = null; } t_Checks.Cells[t_StationName].Value = t_Average; t_Mat.Dispose(); t_Mat = null; t_Bitmap.Dispose(); t_Bitmap = null; GC.Collect(); } } string t_ResultsString = string.Empty; foreach (DataGridViewCell t_Check in t_Checks.Cells) { t_ResultsString += t_Check.Value + ","; } t_ResultsString = t_ResultsString.Remove(t_ResultsString.Length - 1, 1); System.IO.File.AppendAllText("Results.csv", t_ResultsString); System.IO.File.AppendAllText("Results.csv", System.Environment.NewLine); m_CheckList.RemoveAt(0); } } }