public void RechercheCase() { updateInfoTraitement(this, "Recherche de case coché : ", "Init..."); Image<Gray, Byte> imageCase = imageModification.convertionBinaire(lesCorrespondances[lesPagesModeles[0]]); Image<Gray, Byte> imageCaseModele = imageModification.convertionBinaire(lesPagesModeles[0].image); List<Rectangle> lesCases = new List<Rectangle>(); List<Rectangle> lesCasesModele = new List<Rectangle>(); List<String> lesCaseNom = new List<string>(); List<String> lesCaseMotCle = new List<string>(); foreach (ZoneInfo uneCase in lesPagesModeles[0].casesACocher) { if (!lesCaseMotCle.Contains(uneCase.motcle)) { List<Rectangle> listCaseRect = tesseract.selectRectGauche(imageCase, uneCase.motcle, uneCase.hauteur, uneCase.offset); lesCases.AddRange(listCaseRect); lesCasesModele.AddRange(tesseract.selectRectGauche(imageCaseModele, uneCase.motcle, uneCase.hauteur, uneCase.offset)); lesCaseMotCle.Add(uneCase.motcle); } lesCaseNom.Add(uneCase.nom); } List<Image<Gray, Byte>> imgCase = new List<Image<Gray, byte>>(); List<Image<Gray, Byte>> imgModeleCase = new List<Image<Gray, byte>>(); //int j = 1; foreach (Rectangle r in lesCases) { Image<Gray, Byte> img = imageModification.rogner(imageCase, r); imgCase.Add(img); //img.Save(cheminTmp + j + ".tif"); //j++; } //j = 1; foreach (Rectangle r in lesCasesModele) { Image<Gray, Byte> img = imageModification.rogner(imageCaseModele, r); imgModeleCase.Add(img); //img.Save(cheminTmp + j + "M.tif"); //j++; } MatModification matModification = new MatModification(); List<Boolean> resultCase = matModification.CaseCoche(imgModeleCase, imgCase); for (int i = 0; i < resultCase.Count; i++) { if (resultCase[i]) { updateResultatTraitement(this, "Master coché : " + lesCaseNom[i]); } } }
public void RechercheSectionVide() { updateInfoTraitement(this, "Recherche de section vide : ", "Init..."); double ratioZoneDeTexte = double.Parse(ConfigurationManager.AppSettings["ratioZoneDeTexte"]); MatModification matModification = new MatModification(); int modifTaille = 20; foreach (PageModele modele in lesCorrespondances.Keys) { updateInfoTraitement(this, "Recherche de section vide : ", "Page " + modele.numero); Image<Gray, Byte> image = imageModification.convertionBinaire(lesCorrespondances[modele]); Image<Gray, Byte> imageModele = imageModification.convertionBinaire(modele.image); int i = 1; foreach (ZoneInfo sectionInfo in modele.zoneInfos) { Rectangle sectionRect = tesseract.selectRectAllFirst(image, sectionInfo.motcle, sectionInfo.hauteur + modifTaille, sectionInfo.offset - modifTaille); Rectangle sectionModeleRect = tesseract.selectRectAllFirst(imageModele, sectionInfo.motcle, sectionInfo.hauteur + modifTaille, sectionInfo.offset - modifTaille); //Console.WriteLine(sectionInfo.nom + " => " + sectionRect + " - " + sectionModeleRect); Image<Gray, Byte> imgSection = imageModification.rogner(image, sectionRect); Image<Gray, Byte> imgSectionModele = imageModification.rogner(imageModele, sectionModeleRect); //imgSection.Save(cheminTmp + modele.numero + i + ".tif"); //imgSectionModele.Save(cheminTmp + modele.numero + i + "M.tif"); i++; double ratio = matModification.RatioPixelsNoir(imgSection, imgSectionModele); //Console.WriteLine(ratio); //Console.Write(sectionInfo.nom + " "); if (ratio < ratioZoneDeTexte) { //Console.WriteLine("ok"); } else { Console.Write(sectionInfo.nom + " "); Console.WriteLine("ko"); } } } }
public void decoupeRubrique() { updateInfoTraitement(this, "Découpage de rubrique : ", "Init..."); lesRubriques = new Dictionary<PageModele, Dictionary<string, Image<Gray, byte>>>(); MatModification matModification = new MatModification(); int modifTaille = 20; List<Image<Gray, Byte>> corresCopy = new List<Image<Gray, byte>>(); corresCopy.AddRange(lesImagesNum); foreach (PageModele modele in lesCorrespondances.Keys) { updateInfoTraitement(this, "Découpage de rubrique : ", "Page " + modele.numero); Image<Gray, Byte> image = imageModification.convertionBinaire(lesCorrespondances[modele]); Dictionary<String, Image<Gray, byte>> modeleRubriques = new Dictionary<string, Image<Gray, byte>>(); //int i = 1; foreach (ZoneInfo rubriqueInfo in modele.rubriques) { Rectangle rubriqueRect = tesseract.selectRectAllFirst(image, rubriqueInfo.motcle, rubriqueInfo.hauteur + modifTaille, rubriqueInfo.offset - modifTaille); Image<Gray, Byte> imgRubrique = imageModification.rogner(lesCorrespondances[modele], rubriqueRect); //imgRubrique.Save(cheminTmp + modele.numero + i + "-" + rubriqueInfo.nom + ".tif"); modeleRubriques.Add(rubriqueInfo.nom, imgRubrique); //i++; } lesRubriques.Add(modele, modeleRubriques); corresCopy.Remove(lesCorrespondances[modele]); } /* int j = 1; foreach(Image<Gray, Byte> annexe in corresCopy) { annexe.Save(cheminTmp + "annexe-" + j + ".tif"); j++; } */ }