public BloodCardAnalysed Read(string filenametem) { string jsonData = System.IO.File.ReadAllText(filenametem); BloodCardAnalysed descJson = JsonConvert.DeserializeObject <BloodCardAnalysed>(jsonData);//反序列化 return(descJson); }
public void UpDataUI(BloodCardAnalysed booldcardinfo) { var img = booldcardinfo.img; if (img == null) { return; } Image[] tubes = { tube1, tube2, tube3, tube4, tube5, tube6, tube7, tube8 }; Image[] words = { word1, word2, word3, word4, word5, word6, word7, word8 }; Label[] tubeokngs = { tubeokng1, tubeokng2, tubeokng3, tubeokng4, tubeokng5, tubeokng6, tubeokng7, tubeokng8 }; bool is_label_w_ok = booldcardinfo.space1 > booldcardinfo.bloodParameter.label_minw && booldcardinfo.space1 <booldcardinfo.bloodParameter.label_maxw && booldcardinfo.space2> booldcardinfo.bloodParameter.label_minw && booldcardinfo.space2 < booldcardinfo.bloodParameter.label_maxw; labelonedcode.Content = booldcardinfo.one_d_code_data.code; numberocrimg.Source = Tools.OpenCvImgToImageSoure(booldcardinfo.orcnumber.number_img); labelspace.Content = booldcardinfo.orcnumber.numberstr; onedcodeimg.Source = Tools.OpenCvImgToImageSoure(booldcardinfo.one_d_code_data.code_img); booldcardinfo.img.Line(booldcardinfo.space3, booldcardinfo.bloodParameter.label_y, booldcardinfo.space4, booldcardinfo.bloodParameter.label_y, new Scalar(0, 0, 255), 2); booldcardinfo.img.Line(booldcardinfo.space3, booldcardinfo.bloodParameter.label_y + 30, booldcardinfo.space3, booldcardinfo.bloodParameter.label_y - 30, new Scalar(0, 0, 255), 2); booldcardinfo.img.Line(booldcardinfo.space4, booldcardinfo.bloodParameter.label_y + 30, booldcardinfo.space4, booldcardinfo.bloodParameter.label_y - 30, new Scalar(0, 0, 255), 2); Cv2.PutText(booldcardinfo.img, booldcardinfo.space1.ToString(), new OpenCvSharp.Point(booldcardinfo.space4 - booldcardinfo.space1 / 2, booldcardinfo.bloodParameter.label_y - 50), HersheyFonts.HersheySimplex, 2, new Scalar(255, 255, 255), 3); booldcardinfo.img.Line(booldcardinfo.space5, booldcardinfo.bloodParameter.label_y, booldcardinfo.space6, booldcardinfo.bloodParameter.label_y, new Scalar(0, 0, 255), 2); booldcardinfo.img.Line(booldcardinfo.space5, booldcardinfo.bloodParameter.label_y + 30, booldcardinfo.space5, booldcardinfo.bloodParameter.label_y - 30, new Scalar(0, 0, 255), 2); booldcardinfo.img.Line(booldcardinfo.space6, booldcardinfo.bloodParameter.label_y + 30, booldcardinfo.space6, booldcardinfo.bloodParameter.label_y - 30, new Scalar(0, 0, 255), 2); Cv2.PutText(booldcardinfo.img, booldcardinfo.space2.ToString(), new OpenCvSharp.Point(booldcardinfo.space5 - booldcardinfo.space2 / 2, booldcardinfo.bloodParameter.label_y - 50), HersheyFonts.HersheySimplex, 2, new Scalar(255, 255, 255), 3); for (int i = 0; i < 8; i++) { tubes[i].Source = null; words[i].Source = null; } int tubecount = 0; int wordcout = 0; for (int i = 0; i < booldcardinfo.tobjs.Count; i++) { var tube = booldcardinfo.tobjs[i]; int label = tube.label; var cutimg = tube.img; if (cutimg.Width != 0 && cutimg.Height != 0) { if (i < 8) { Cv2.CvtColor(cutimg, cutimg, ColorConversionCodes.GRAY2BGR); cutimg.Line(cutimg.Width / 2, tube.miny, cutimg.Width / 2, tube.maxy, new Scalar(0, 0, 255), 1); cutimg.Line(cutimg.Width / 2 - 10, tube.miny, cutimg.Width / 2 + 10, tube.miny, new Scalar(0, 255, 0), 1); cutimg.Line(cutimg.Width / 2 - 10, tube.maxy, cutimg.Width / 2 + 10, tube.maxy, new Scalar(0, 255, 0), 1); int pixh = tube.maxy - tube.miny; Cv2.PutText(cutimg, tube.miny.ToString(), new OpenCvSharp.Point(cutimg.Width / 2 + 15, tube.miny + 5), HersheyFonts.HersheySimplex, 0.3, new Scalar(0, 0, 0)); Cv2.PutText(cutimg, pixh.ToString(), new OpenCvSharp.Point(cutimg.Width / 2 + 15, tube.miny + pixh / 2 + 5), HersheyFonts.HersheySimplex, 0.3, new Scalar(0, 0, 0)); Cv2.PutText(cutimg, tube.maxy.ToString(), new OpenCvSharp.Point(cutimg.Width / 2 + 15, tube.maxy + 5), HersheyFonts.HersheySimplex, 0.3, new Scalar(0, 0, 0)); for (int j = 0; j < tube.foreigs.Count; j++) { if (booldcardinfo.bloodParameter.is_show_space == false) { cutimg.Rectangle(tube.foreigs[j].rect, new Scalar(0, 0, 255), 1); Cv2.PutText(cutimg, tube.foreigs[j].score.ToString(), new OpenCvSharp.Point(tube.foreigs[j].rect.X + 10, tube.foreigs[j].rect.Y + tube.foreigs[j].rect.Height), HersheyFonts.HersheySimplex, 0.3, new Scalar(255, 255, 255)); } } tubes[tubecount % 8].Source = Tools.OpenCvImgToImageSoure(cutimg); tubecount++; } else { words[wordcout % 8].Source = Tools.OpenCvImgToImageSoure(cutimg); wordcout++; } } } for (int i = 0; i < booldcardinfo.is_tube_ok.Count; i++) { string [] ok_str = { "Pass", "Fail" }; int index = booldcardinfo.is_tube_ok[i] ? 0 : 1; var tube = booldcardinfo.tobjs[i]; tubeokngs[i].Content = "结果:" + ok_str[index] + "\n" + "上极:" + booldcardinfo.upliqmaxcv + "," + booldcardinfo.is_ulevermaxcv_ok + "\n" + "下极:" + booldcardinfo.downliqmaxcv + "," + booldcardinfo.is_dlevermaxcv_ok + "\n" + "上异:" + booldcardinfo.upliqcv.ToString("f2") + "," + booldcardinfo.is_ulevercv_ok + "\n" + "下异:" + booldcardinfo.downliqcv.ToString("f2") + "," + booldcardinfo.is_dlevercv_ok + "\n" + "杂质:" + booldcardinfo.is_inspection_ok[i] + "\n" + "上液:" + booldcardinfo.is_ulever_ok[i] + "\n" + "下液:" + booldcardinfo.is_dlever_ok[i] + "\n" + "颜色:" + booldcardinfo.is_color_ok[i] + "\n" + "标签:" + booldcardinfo.is_labelfilp_ok + "\n" + tube.infomation; } string[] all_ok_str = { "O\nK", "N\nG" }; labelisallok.Content = booldcardinfo.is_all_ok ? all_ok_str[0] : all_ok_str[1]; }