Пример #1
0
        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();
        }
Пример #2
0
        /// <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);
        }
Пример #3
0
        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();
        }
Пример #4
0
 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);
         }
     }
 }
Пример #5
0
        /// <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);
            }
        }
Пример #6
0
        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");
        }