Jelajahi Sumber

小鼠大文件分析失败

jeremy 9 bulan lalu
induk
melakukan
af774cf8ac

+ 35 - 38
Service/AIDiagnosisService.URM.cs

@@ -386,46 +386,43 @@ namespace WingAIDiagnosisService.Service
         {
             try
             {
-                StringBuilder arguments = new StringBuilder();
-                arguments.Append($"URMAnalysis ");
-                arguments.Append($"{outputFolder} ");
-                arguments.Append($"{converFile} ");
+                var arguments = new List<string>();
+                arguments.Add($"{origialFile}");
+                arguments.Add($"{GetValue(urmParamers, "familyName")}");
+                arguments.Add($"{GetValue(urmParamers, "typeInfo")}");
+                arguments.Add($"{GetValue(urmParamers, "nativeId")}");
+                arguments.Add($"{GetValue(urmParamers, "VecLens")}");
+                arguments.Add($"{GetValue(urmParamers, "Mlas")}");
+                arguments.Add($"{GetValue(urmParamers, "FramesGot")}");
+                arguments.Add($"{GetValue(urmParamers, "CenterFrequencyMhz")}");
+                arguments.Add($"{GetValue(urmParamers, "SupersonicSpeed")}");
+                arguments.Add($"{GetValue(urmParamers, "FrequencyMin")}");
+                arguments.Add($"{GetValue(urmParamers, "FrameRateDisplay")}");
+                arguments.Add($"{GetValue(urmParamers, "Depth")}");
+                arguments.Add($"{GetValue(urmParamers, "X0")}");
+                arguments.Add($"{GetValue(urmParamers, "Z0")}");
+                arguments.Add($"{GetValue(urmParamers, "ProbeType")}");
+                arguments.Add($"{GetValue(urmParamers, "ScaleOfPixel_x")}");
+                arguments.Add($"{GetValue(urmParamers, "ScaleOfPixel_y")}");
+                arguments.Add($"{GetValue(urmParamers, "section")}");
+                arguments.Add($"{GetValue(urmParamers, "MOCOYN")}");
+                arguments.Add($"{GetValue(urmParamers, "MidProc_DeciFactor")}");
+                arguments.Add($"{GetValue(urmParamers, "VectorStartForMid")}");
+                arguments.Add($"{GetValue(urmParamers, "isliner")}");
 
-                arguments.Append($"{origialFile};");
-                arguments.Append($"{GetValue(urmParamers, "familyName")};");
-                arguments.Append($"{GetValue(urmParamers, "typeInfo")};");
-                arguments.Append($"{GetValue(urmParamers, "nativeId")};");
-                arguments.Append($"{GetValue(urmParamers, "VecLens")};");
-                arguments.Append($"{GetValue(urmParamers, "Mlas")};");
-                arguments.Append($"{GetValue(urmParamers, "FramesGot")};");
-                arguments.Append($"{GetValue(urmParamers, "CenterFrequencyMhz")};");
-                arguments.Append($"{GetValue(urmParamers, "SupersonicSpeed")};");
-                arguments.Append($"{GetValue(urmParamers, "FrequencyMin")};");
-                arguments.Append($"{GetValue(urmParamers, "FrameRateDisplay")};");
-                arguments.Append($"{GetValue(urmParamers, "Depth")};");
-                arguments.Append($"{GetValue(urmParamers, "X0")};");
-                arguments.Append($"{GetValue(urmParamers, "Z0")};");
-                arguments.Append($"{GetValue(urmParamers, "ProbeType")};");
-                arguments.Append($"{GetValue(urmParamers, "ScaleOfPixel_x")};");
-                arguments.Append($"{GetValue(urmParamers, "ScaleOfPixel_y")};");
-                arguments.Append($"{GetValue(urmParamers, "section")};");
-                arguments.Append($"{GetValue(urmParamers, "MOCOYN")};");
-                arguments.Append($"{GetValue(urmParamers, "MidProc_DeciFactor")};");
-                arguments.Append($"{GetValue(urmParamers, "VectorStartForMid")};");
-                arguments.Append($"{GetValue(urmParamers, "isliner")};");
+                arguments.Add($"{GetValue(urmParamers, "startX")}");
+                arguments.Add($"{GetValue(urmParamers, "startY")}");
+                arguments.Add($"{GetValue(urmParamers, "width")}");
+                arguments.Add($"{GetValue(urmParamers, "height")}");
+                arguments.Add($"{GetValue(urmParamers, "CustomizedStartFrame")}");
+                arguments.Add($"{GetValue(urmParamers, "CustomizedEndFrame")}");
+                arguments.Add($"{GetValue(urmParamers, "RoiXPercent")}");
+                arguments.Add($"{GetValue(urmParamers, "RoiYPercent")}");
+                arguments.Add($"{GetValue(urmParamers, "RoiWPercent")}");
+                arguments.Add($"{GetValue(urmParamers, "RoiHPercent")}");
 
-                arguments.Append($"{GetValue(urmParamers, "startX")};");
-                arguments.Append($"{GetValue(urmParamers, "startY")};");
-                arguments.Append($"{GetValue(urmParamers, "width")};");
-                arguments.Append($"{GetValue(urmParamers, "height")};");
-                arguments.Append($"{GetValue(urmParamers, "CustomizedStartFrame")};");
-                arguments.Append($"{GetValue(urmParamers, "CustomizedEndFrame")};");
-                arguments.Append($"{GetValue(urmParamers, "RoiXPercent")};");
-                arguments.Append($"{GetValue(urmParamers, "RoiYPercent")};");
-                arguments.Append($"{GetValue(urmParamers, "RoiWPercent")};");
-                arguments.Append($"{GetValue(urmParamers, "RoiHPercent")};");
-
-                return URMAnalysisManager.DoURMAnalysis(arguments.ToString().Split(" "));
+                Logger.WriteLineInfo($"AIDiagnosisService DoURMAnalysisV2 arguments:{string.Join(";", arguments)}");
+                return URMAnalysisManager.DoURMAnalysis(arguments, outputFolder, converFile);
             }
             catch (Exception ex)
             {

+ 20 - 5
URMManage/ResultDataIOHelper.cs

@@ -78,17 +78,32 @@ namespace WingAIDiagnosisService.URMManage
         public static NativeArray ReadDoubleArrayFromFile(string filePath, int length)
         {
             NativeArray array = new NativeArray(length * 8);
-            using (BinaryReader reader = new BinaryReader(File.Open(filePath, FileMode.Open, FileAccess.Read, FileShare.Read)))
+            using (FileStream stream = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read))
             {
-                unsafe
+                using (BinaryReader reader = new BinaryReader(stream))
                 {
-                    double* data = (double*)array.Start.ToPointer();
-                    for (int i = 0; i < length; i++)
+                    unsafe
                     {
-                        data[i] = reader.ReadDouble();
+                        double* data = (double*)array.Start.ToPointer();
+                        for (int i = 0; i < length; i++)
+                        {
+                            data[i] = reader.ReadDouble();
+                        }
                     }
+                    reader.Close(); // 在这里手动关闭BinaryReader对象
                 }
             }
+            // using (BinaryReader reader = new BinaryReader(File.Open(filePath, FileMode.Open, FileAccess.Read, FileShare.Read)))
+            // {
+            //     unsafe
+            //     {
+            //         double* data = (double*)array.Start.ToPointer();
+            //         for (int i = 0; i < length; i++)
+            //         {
+            //             data[i] = reader.ReadDouble();
+            //         }
+            //     }
+            // }
             return array;
         }
 

+ 72 - 72
URMManage/URMAnalysisManager.cs

@@ -1,10 +1,12 @@
 using System;
+using System.Collections.Generic;
 using System.IO;
 using SixLabors.ImageSharp;
 using SixLabors.ImageSharp.Processing;
 using Vinno.DataTypes;
 using Vinno.Infrastructure;
 using WingInterfaceLibrary.Request.RemedicalAISelected;
+using WingServerCommon.Log;
 
 namespace WingAIDiagnosisService.URMManage
 {
@@ -16,80 +18,79 @@ namespace WingAIDiagnosisService.URMManage
             WatchingVideoProcessor();
         }
 
-        public URMAnalysisV2Result DoURMAnalysis(string[] args)
+        public URMAnalysisV2Result DoURMAnalysis(List<string> arguments, string outputFolder, string coverFile)
         {
-            var arg2Params = args[3].Split(";");
+            try
+            {
+                var arg2Params = arguments;
 
-            // var familyName = "Linear";
-            // var typeInfo = "Linear_U5-15LE";
-            // var nativeId = "Breast";
-            // var VecLens = 568;
-            // var Mlas = 128;
-            // var FramesGot = 2200;
-            // var CenterFrequencyMhz = 4.7;
-            // var SupersonicSpeed = 1540;
-            // var FrequencyMin = 6.5;
-            // var FrameRateDisplay = 101.9;
-            // var Depth = 0;
-            // var X0 = 0;
-            // var Z0 = 0;
-            // var ProbeType = "1";
-            // var ScaleOfPixel_x = 0.214925914347303;
-            // var ScaleOfPixel_y = 0.61038961038961;
-            // var section = "URMAnalysisParam:Level4";
-            // var MOCOYN = "0";
-            // var MidProc_DeciFactor = 1;
-            // var VectorStartForMid = 11;
-            // var isliner = false;
-            // // 前端调用时传入
-            // var startX = 47;
-            // var startY = 14;
-            // var width = 74;
-            // var height = 492;
-            // int? CustomizedStartFrame = null;
-            // int? CustomizedEndFrame = null;
+                // var familyName = "Linear";
+                // var typeInfo = "Linear_U5-15LE";
+                // var nativeId = "Breast";
+                // var VecLens = 568;
+                // var Mlas = 128;
+                // var FramesGot = 2200;
+                // var CenterFrequencyMhz = 4.7;
+                // var SupersonicSpeed = 1540;
+                // var FrequencyMin = 6.5;
+                // var FrameRateDisplay = 101.9;
+                // var Depth = 0;
+                // var X0 = 0;
+                // var Z0 = 0;
+                // var ProbeType = "1";
+                // var ScaleOfPixel_x = 0.214925914347303;
+                // var ScaleOfPixel_y = 0.61038961038961;
+                // var section = "URMAnalysisParam:Level4";
+                // var MOCOYN = "0";
+                // var MidProc_DeciFactor = 1;
+                // var VectorStartForMid = 11;
+                // var isliner = false;
+                // // 前端调用时传入
+                // var startX = 47;
+                // var startY = 14;
+                // var width = 74;
+                // var height = 492;
+                // int? CustomizedStartFrame = null;
+                // int? CustomizedEndFrame = null;
 
-            var UrmDatapath = arg2Params[0];
-            var familyName = arg2Params[1];
-            var typeInfo = arg2Params[2];
-            var nativeId = arg2Params[3];
-            var VecLens = ConvertToInt(arg2Params[4]);
-            var Mlas = ConvertToInt(arg2Params[5]);
-            var FramesGot = ConvertToInt(arg2Params[6]);
-            var CenterFrequencyMhz = ConvertToDouble(arg2Params[7]);
-            var SupersonicSpeed = ConvertToInt(arg2Params[8]);
-            var FrequencyMin = ConvertToDouble(arg2Params[9]);
-            var FrameRateDisplay = ConvertToDouble(arg2Params[10]);
-            var Depth = ConvertToInt(arg2Params[11]);
-            var X0 = ConvertToInt(arg2Params[12]);
-            var Z0 = ConvertToInt(arg2Params[13]);
-            var ProbeType = arg2Params[14];
-            var ScaleOfPixel_x = ConvertToDouble(arg2Params[15]);
-            var ScaleOfPixel_y = ConvertToDouble(arg2Params[16]);
-            var section = arg2Params[17];
-            var MOCOYN = arg2Params[18];
-            var MidProc_DeciFactor = ConvertToInt(arg2Params[19]);
-            var VectorStartForMid = ConvertToInt(arg2Params[20]);
-            var isliner = arg2Params[21]?.ToLower() == "true";
-            // 前端调用时传入
-            var startX = ConvertToInt(arg2Params[22]);
-            var startY = ConvertToInt(arg2Params[23]);
-            var width = ConvertToInt(arg2Params[24]);
-            var height = ConvertToInt(arg2Params[25]);
-            int? CustomizedStartFrame = ConvertToIntCanNull(arg2Params[26]);
-            int? CustomizedEndFrame = ConvertToIntCanNull(arg2Params[27]);
-            var roiXPercent = ConvertToDouble(arg2Params[28]);
-            var roiYPercent = ConvertToDouble(arg2Params[29]);
-            var roiWPercent = ConvertToDouble(arg2Params[30]);
-            var roiHPercent = ConvertToDouble(arg2Params[31]);
-            // 开始执行分析
-            URMFileIO urmFileIO = new URMFileIO(familyName: familyName, typeInfo: typeInfo, nativeId: nativeId);
-            urmFileIO.UpdateParamJson(UrmDatapath, VecLens, Mlas, FramesGot, CenterFrequencyMhz, SupersonicSpeed, FrequencyMin, FrameRateDisplay, Depth, X0, Z0, ProbeType, ScaleOfPixel_x, ScaleOfPixel_y, section, MOCOYN, MidProc_DeciFactor, VectorStartForMid, startX, startY, width, height, CustomizedStartFrame, CustomizedEndFrame, out string urmParams);
+                var UrmDatapath = arg2Params[0];
+                var familyName = arg2Params[1];
+                var typeInfo = arg2Params[2];
+                var nativeId = arg2Params[3];
+                var VecLens = ConvertToInt(arg2Params[4]);
+                var Mlas = ConvertToInt(arg2Params[5]);
+                var FramesGot = ConvertToInt(arg2Params[6]);
+                var CenterFrequencyMhz = ConvertToDouble(arg2Params[7]);
+                var SupersonicSpeed = ConvertToInt(arg2Params[8]);
+                var FrequencyMin = ConvertToDouble(arg2Params[9]);
+                var FrameRateDisplay = ConvertToDouble(arg2Params[10]);
+                var Depth = ConvertToInt(arg2Params[11]);
+                var X0 = ConvertToInt(arg2Params[12]);
+                var Z0 = ConvertToInt(arg2Params[13]);
+                var ProbeType = arg2Params[14];
+                var ScaleOfPixel_x = ConvertToDouble(arg2Params[15]);
+                var ScaleOfPixel_y = ConvertToDouble(arg2Params[16]);
+                var section = arg2Params[17];
+                var MOCOYN = arg2Params[18];
+                var MidProc_DeciFactor = ConvertToInt(arg2Params[19]);
+                var VectorStartForMid = ConvertToInt(arg2Params[20]);
+                var isliner = arg2Params[21]?.ToLower() == "true";
+                // 前端调用时传入
+                var startX = ConvertToInt(arg2Params[22]);
+                var startY = ConvertToInt(arg2Params[23]);
+                var width = ConvertToInt(arg2Params[24]);
+                var height = ConvertToInt(arg2Params[25]);
+                int? CustomizedStartFrame = ConvertToIntCanNull(arg2Params[26]);
+                int? CustomizedEndFrame = ConvertToIntCanNull(arg2Params[27]);
+                var roiXPercent = ConvertToDouble(arg2Params[28]);
+                var roiYPercent = ConvertToDouble(arg2Params[29]);
+                var roiWPercent = ConvertToDouble(arg2Params[30]);
+                var roiHPercent = ConvertToDouble(arg2Params[31]);
+                // 开始执行分析
+                URMFileIO urmFileIO = new URMFileIO(familyName: familyName, typeInfo: typeInfo, nativeId: nativeId);
+                urmFileIO.UpdateParamJson(UrmDatapath, VecLens, Mlas, FramesGot, CenterFrequencyMhz, SupersonicSpeed, FrequencyMin, FrameRateDisplay, Depth, X0, Z0, ProbeType, ScaleOfPixel_x, ScaleOfPixel_y, section, MOCOYN, MidProc_DeciFactor, VectorStartForMid, startX, startY, width, height, CustomizedStartFrame, CustomizedEndFrame, out string urmParams);
 
-            var modeRecord = new URMAnalysisModeRecord();
-            try
-            {
-                var outputFolder = args[1];
+                var modeRecord = new URMAnalysisModeRecord();
                 if (!Directory.Exists(outputFolder))
                 {
                     Directory.CreateDirectory(outputFolder);
@@ -113,7 +114,6 @@ namespace WingAIDiagnosisService.URMManage
                 ResultDataIOHelper.WriteURMPointsToFile(pointsPath, modeRecord.URMPoints);
                 ResultDataIOHelper.WriteURMPointNumsToFile(pointNumsPath, modeRecord.URMPointNums);
 
-                var coverFile = args[2];
                 int coverImageWidth = 0;
                 int coverImageHeight = 0;
                 using (var image = Image.Load(coverFile))
@@ -195,7 +195,7 @@ namespace WingAIDiagnosisService.URMManage
             }
             catch (Exception ex)
             {
-
+                WingServerCommon.Log.Logger.WriteLineWarn($"AIService URMAnalysisManager DoURMAnalysis error, ex:{ex}");
             }
             return null;
         }