public void ConvertThread() { if (String.IsNullOrEmpty(SourcePath)) { return; } //準備資料 string JsonSourcePath = this.SourcePath; string BackupPath = System.IO.Path.Combine(JsonSourcePath, "BackUp"); Func.CheckDirExist(BackupPath); string SourceFilePatten = "*.json"; List <string> JsonFilePathSet = Func.GetFilesFromDir(JsonSourcePath, SourceFilePatten, true); ProcessBarPage.SetMaxAndMin(0, JsonFilePathSet.Count); ProcessBarPage.SetProgressValue(0); DcmNotExistPath = new List <string>(); #region 開始轉換 #endregion for (int i = 0; i < JsonFilePathSet.Count; i++) { ProcessBarPage.SetProgressValue(i); string JsonFilePath = JsonFilePathSet[i]; string ImageFileNameWithOutExt = System.IO.Path.GetFileNameWithoutExtension(JsonFilePath); string DcmFilePath = JsonFilePath.Substring(0, JsonFilePath.Length - 5) + ".dcm"; DcmInfo TempDcmInfo; if (Func.CheckFileExist(DcmFilePath)) { TempDcmInfo = Image_Func.DcmDetailData(DcmFilePath); } else { //如果Json路徑下沒有dcm檔案則跳過此次轉換 DcmNotExistPath.Add(JsonFilePath); continue; } #region 備份檔案到備份路徑 string V1LogStr = Func.ReadText(JsonFilePath); string BackUpPath = System.IO.Path.Combine(BackupPath, ImageFileNameWithOutExt + ".json"); Func.WriteText(BackUpPath, V1LogStr); #endregion //讀取V1檔案 if (SaveResultV2.IsVersion2(V1LogStr)) { //如果是V2版本則免轉換跳過 continue; } SaveResultV1 V1Log = SaveResultV1.ReadFile(JsonFilePath); //轉V2 SaveResultV2 V2Log = SaveResultV2.Convert(V1Log, TempDcmInfo); //複寫V1版本 SaveResultV2.SaveFile(V2Log, JsonFilePath); } ProcessBarPage.CloseWindows(); OK(); }
/// <summary> /// 存入目前的紀錄檔 /// </summary> private void SaveLabelFile() { LabelLog.Info = RightNowInfo; string dcmfile = ImagePath_Dcm.Substring(0, ImagePath_Dcm.Length - 4) + ".json"; string jpgfile = ImagePath_Jpg.Substring(0, ImagePath_Jpg.Length - 4) + ".json"; LabelLog.Optimize_Brightness = trbImageBrightness.Value; LabelLog.Optimize_Contrast = trbImageContrast.Value; SaveResultV2.SaveFile(LabelLog, dcmfile); SaveResultV2.SaveFile(LabelLog, jpgfile); }
private void ProcessFile() { List <string> Files = Func.GetFilesFromDir(DirPath, "*.json"); List <SaveResultV2> Saves = SaveResultV2.ReadFile(Files); ProcessBarPage.SetMaxAndMin(0, Saves.Count); for (int i = 0; i < Saves.Count; i++) { ProcessBarPage.SetProgressValue(i); Saves[i].CheckKeyPoints(); SaveResultV2.SaveFile(Saves[i], Files[i]); } ProcessBarPage.CloseWindows(); OK(); }
private void ProcessFile(ref StringBuilder sb, SaveResultV2 LabelLog, bool ChangeLine = true) { if (LabelLog.KeyPoints.Count == 13) { string FileName = System.IO.Path.GetFileNameWithoutExtension(LabelLog.ImageFileName); int[] plasticROI = GetROI(LabelLog.KeyPoints.GetRange(0, 4)); int[] tracheaROI = GetROI(LabelLog.KeyPoints.GetRange(4, 9)); sb.Append(string.Format("{0} {1} {2} {3} {4} {5}", FileName, "0", plasticROI[0], plasticROI[1], plasticROI[2], plasticROI[3])); sb.Append(Environment.NewLine); sb.Append(string.Format("{0} {1} {2} {3} {4} {5}", FileName, "1", tracheaROI[0], tracheaROI[1], tracheaROI[2], tracheaROI[3])); if (ChangeLine) { sb.Append(Environment.NewLine); } } }
/// <summary> /// 載入標籤紀錄檔的方法 /// </summary> /// <param name="DcmImagePath"></param> private void LoadingLabelFile(string DcmImagePath, string JPGImagePath) { string TargetPath = String.Empty; //先檢查紀錄檔案的路徑 #region 判斷路徑,最後會把決定好要讀檔的路徑放在TargetPath if (!String.IsNullOrEmpty(DcmImagePath) && !String.IsNullOrEmpty(JPGImagePath)) { string dcmLabelLogPath = DcmImagePath.Remove(DcmImagePath.Length - 4, 4) + ".json"; string jpgLabelLogPath = JPGImagePath.Remove(JPGImagePath.Length - 4, 4) + ".json"; if (Func.CheckFileExist(dcmLabelLogPath)) { TargetPath = dcmLabelLogPath; } else if (Func.CheckFileExist(jpgLabelLogPath)) { TargetPath = jpgLabelLogPath; } else { //該影像沒有紀錄檔 } } else { return; } #endregion if (!String.IsNullOrEmpty(TargetPath)) { LabelLog = SaveResultReader.ReadFromFile(TargetPath, RightNowInfo); //判斷讀出來的檔案是否有13個點,沒有則初始化 if (LabelLog.KeyPoints.Count != 13) { LabelLog = new SaveResultV2(DcmImagePath); } } else { LabelLog = new SaveResultV2(DcmImagePath); } }
private void btnProcess_Click(object sender, EventArgs e) { StringBuilder sb = new StringBuilder(); string SourcePath = txtFilePath.Text; string SourcePatten = "*.json"; string TargetPath = txtTargetPath.Text; List <string> paths = Func.GetFilesFromDir(SourcePath, SourcePatten); List <SaveResultV2> Results = new List <SaveResultV2>(); StringBuilder ErrorBuilder = new StringBuilder(); for (int i = 0; i < paths.Count; i++) { string jsonpath = paths[i]; string dcmPath = jsonpath.Replace(".json", ".dcm"); string FileName = Path.GetFileName(dcmPath); SaveResultV2 item = SaveResultV2.ReadFile(jsonpath); //判斷是否是V2版本存檔跟是否有滿足13個點 if (item.ResultVersion == "2" && item.KeyPoints.Count == 13) { string Message = String.Format("Check:{0}/{1}", i, paths.Count); lblMessage.Text = Message; bool HaveNullNode = true; foreach (Nullable <Point> point in item.KeyPoints) { if (point == null) { HaveNullNode = false; break; } } if (HaveNullNode) { Func.CopyFile(jsonpath, TargetPath + @"\" + FileName.Replace(".dcm", ".json")); Func.CopyFile(dcmPath, TargetPath + @"\" + FileName); Results.Add(item); } else { ErrorBuilder.Append(String.Format("{0}{1}", jsonpath, Environment.NewLine)); } } } for (int i = 0; i < Results.Count; i++) { string Message = String.Format("Proc:{0}/{1}", i, Results.Count); lblMessage.Text = Message; if (i == Results.Count - 1) { ProcessFile(ref sb, Results[i], false); } else { ProcessFile(ref sb, Results[i], true); } } Func.WriteText(TargetPath + @"\" + "Total.txt", sb.ToString()); Func.WriteText(TargetPath + @"\" + "Error.txt", ErrorBuilder.ToString()); MessageBox.Show("OK", "OK"); }