// standart report public static void CreateStandartReport3(List <Bitmap> list /*, int[] sample*/) { GC.Collect(); MembersMorphoParameters mmp = MembersMorphoParameters.Deserialization(); int inx = 0; Bitmap[] src = new Bitmap[list.Count]; blob_tag[] blobs = new blob_tag[src.Length]; foreach (Bitmap image in list) { src[inx++] = image; } ConfigSetting cfg = SettingsManager.Instance.GetCurrent(System.Windows.Forms.Application.StartupPath); mmxRtfStore store = new mmxRtfStore(); store.AddRTF(Application.StartupPath + @"\reports\blank.rtf"); // draw images for (int i = 0; i < src.Length; i++) { blobs[i] = (blob_tag)src[i].Tag; Bitmap bsrc = blobs[i].Image_bgr.Bitmap; //src[i].Clone(new Rectangle(0,0,src[i].Width , src[i].Height), PixelFormat.Format24bppRgb); Bitmap bbin = blobs[i].Image_bin.Bitmap; if (false && bsrc.Width > cfg.Report.ImgWidth) { Size size = new Size(cfg.Report.ImgWidth, cfg.Report.ImgHeigth); bsrc = resize(bsrc, size, true); bbin = resize(bbin, size, false); } store.AddText((cfg.Report.ImgOriental) ? " Source / Binarised images:" : " Source images:"); store.AddParagraph(); store.AddImage(bsrc); if (!cfg.Report.ImgOriental) { store.AddText(" Binarised images:"); store.AddParagraph(); } store.AddImage(bbin); store.AddParagraph(); } // draw histograms string[,] toRep = new string[mmp.countToReport, blobs.Length]; string[] colNames = new string[mmp.countToReport]; int counter = 0; int j = 0; for (int i = 0; i < 16; i++) { if (mmp.mp[i].ToReport) { string filtname = FilterName(mmp.mp[i].name, "mkm"); string s = "Histogram of " + filtname + " of particles "; double[] z = Filter(mmp.mp[i].name, blobs); colNames[counter] = mmp.mp[i].name; string[] tmp = FilterTable(mmp.mp[i].name, blobs); for (j = 0; j < blobs.Length; j++) { toRep[counter, j] = tmp[j]; } counter++; if (z != null) { store.AddHistogram(s, mmp.mp[i].name, "", "", z, 10, 5, 2, cfg.Report.HistoWidth, cfg.Report.HistoHeigth, true); store.AddParagraph(); } } } counter--; // draw tables if (colNames.Length > 0) { string[] filname = FilterName(colNames, "mkm"); store.AddTable(toRep, filname, "Morpho Parameters of particles"); } // formula //FormulaArea fa = new FormulaArea(blobs, (new CoefRangeXML()).Exec()); //decimal formula = fa.Exec(); //store.AddText(fa.Formula, new Font("Courier New", 9, FontStyle.Regular)); // save rep to tmp file store.SaveAndShow(); GC.Collect(); }
public static void CreateLocalReport0(List <Bitmap> srcMaster, List <Bitmap> srcSlave, List <long []> link) { GC.Collect(); MembersMorphoParameters mmp = MembersMorphoParameters.Deserialization(); ConfigSetting cfg = SettingsManager.Instance.GetCurrent(System.Windows.Forms.Application.StartupPath); mmxRtfStore store = new mmxRtfStore(); blob_tag[] blobsMaster = new blob_tag[srcMaster.Count]; blob_tag[] blobsSlave = new blob_tag[srcSlave.Count]; store.AddRTF(Application.StartupPath + @"\reports\blank.rtf"); int good = 0; int bad = 0; // draw images for (int i = 0; i < srcMaster.Count; i++) { bool isPaire = (link != null && link.Count > i && link[i][1] > -1); blobsMaster[i] = (blob_tag)srcMaster[i].Tag; Bitmap bsrcMaster = blobsMaster[i].Image_bgr.Bitmap;//srcMaster[i].Clone(new Rectangle(0, 0, srcMaster[i].Width, srcMaster[i].Height), PixelFormat.Format24bppRgb); Bitmap bbinMaster = blobsMaster[i].Image_bin.Bitmap; Bitmap bsrcSlave = null; Bitmap bbinSlave = null; if (isPaire) { Bitmap slaveBitmap = getSlave(srcSlave, link[i][1]); blobsSlave[i] = (blob_tag)slaveBitmap.Tag; bsrcSlave = blobsSlave[i].Image_bgr.Bitmap; bbinSlave = blobsSlave[i].Image_bin.Bitmap; } if (false && bsrcMaster.Width > cfg.Report.ImgWidth) { Size size = new Size(cfg.Report.ImgWidth, cfg.Report.ImgHeigth); bsrcMaster = resize(bsrcMaster, size, true); bbinMaster = resize(bbinMaster, size, false); bsrcSlave = resize(bsrcSlave, size, true); bbinSlave = resize(bbinSlave, size, false); } string resultat; if (blobsMaster[i].check || (isPaire && blobsSlave[i].check)) { resultat = "bad"; bad++; } else { resultat = "good"; good++; } // make report ... { store.AddParagraph(); store.AddText($"Sample #{i + 1} is {resultat}"); store.AddParagraph(); store.AddImage(bsrcMaster); store.AddImage(bbinMaster); store.AddText(" - source / binarised images from camera #1"); store.AddParagraph(); if (isPaire) { store.AddImage(bsrcSlave); store.AddImage(bbinSlave); store.AddText(" - source / binarised images from camera #2"); } // store.AddParagraph(); } { string[,] toRep = new string[mmp.countToReport, 2]; string[] colNames = new string[mmp.countToReport]; int counter = 0; for (int ix = 0; ix < 16; ix++) { if (mmp.mp[ix].ToReport) { colNames[counter] = mmp.mp[ix].name; blob_tag[] arr = (isPaire)? new blob_tag[] { blobsMaster[i], blobsSlave[i] } : new blob_tag[] { blobsMaster[i] }; string[] items = FilterTable(mmp.mp[ix].name, arr); for (int j = 0; j < arr.Length; j++) { toRep[counter, j] = items[j]; } counter++; } } counter--; // draw tables if (colNames.Length > 0) { string[] filname = FilterName(colNames, "mkm"); store.AddTable(toRep, filname, $"morpho parameters of sample #{i+1}"); } } } store.AddParagraph(); store.AddText($"Total conclusion by report: total detect samples - {srcMaster.Count} ( good - {good }, bad - {bad} )"); // save rep to tmp file store.SaveAndShow(); GC.Collect(); }