Skip to content

Commit f80939d

Browse files
committed
去除所有 Cv2.ImRead ,解决中文路径问题
1 parent f7976b0 commit f80939d

File tree

5 files changed

+18
-6
lines changed

5 files changed

+18
-6
lines changed

BetterGenshinImpact/Core/Recognition/OCR/Paddle/PaddleOcrService.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
using BetterGenshinImpact.Core.Config;
88
using BetterGenshinImpact.Core.Recognition.OCR.Engine;
99
using BetterGenshinImpact.Core.Recognition.ONNX;
10+
using BetterGenshinImpact.GameTask.Common.BgiVision;
1011
using OpenCvSharp;
1112
using OpenCvSharp.Extensions;
1213
using YamlDotNet.Core;
@@ -247,7 +248,7 @@ public PaddleOcrService(BgiOnnxFactory bgiOnnxFactory, PaddleOcrModelType modelT
247248
_localRecModel = modelsRec;
248249

249250
// 预热模型
250-
using var preHeatImageMat = Cv2.ImRead(modelType.PreHeatImagePath) ??
251+
using var preHeatImageMat = Bv.ImRead(modelType.PreHeatImagePath) ??
251252
throw new FileNotFoundException($"预热图片未找到: {modelType.PreHeatImagePath}");
252253
// Debug输出结果
253254
var preHeatResult = RunAll(preHeatImageMat, 1);

BetterGenshinImpact/Core/Recognition/OpenCv/FeatureMatch/Feature2DExtensions.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using System;
22
using System.Collections.Generic;
33
using System.Linq;
4+
using BetterGenshinImpact.GameTask.Common.BgiVision;
45
using BetterGenshinImpact.Helpers;
56
using OpenCvSharp;
67

@@ -24,7 +25,7 @@ private static DescriptorMatcher GetMatcher(DescriptorMatcherType type)
2425
public static void SaveFeatures(this Feature2D feature2D, string trainImagePath, string trainKeyPointsPath, string trainDescriptorsPath)
2526
{
2627
Mat trainDescriptors = new();
27-
var img = Cv2.ImRead(trainImagePath, ImreadModes.Grayscale);
28+
var img = Bv.ImRead(trainImagePath, ImreadModes.Grayscale);
2829

2930
feature2D.DetectAndCompute(img, null, out var trainKeyPoints, trainDescriptors);
3031

BetterGenshinImpact/GameTask/Common/BgiVision/BvImage.cs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
1-
using System.Threading;
1+
using System.IO;
2+
using System.Threading;
23
using System.Threading.Tasks;
34
using BetterGenshinImpact.Core.Recognition;
45
using BetterGenshinImpact.GameTask.Model.Area;
6+
using OpenCvSharp;
57

68
namespace BetterGenshinImpact.GameTask.Common.BgiVision;
79

@@ -10,6 +12,12 @@ namespace BetterGenshinImpact.GameTask.Common.BgiVision;
1012
/// </summary>
1113
public static partial class Bv
1214
{
15+
16+
public static Mat ImRead(string fileName, ImreadModes flags = ImreadModes.Color)
17+
{
18+
return Mat.FromStream(File.OpenRead(fileName), flags);
19+
}
20+
1321
/// <summary>
1422
/// 等待图像被找到
1523
/// </summary>

BetterGenshinImpact/GameTask/Common/Map/CharacterOrientation.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using OpenCvSharp;
22
using System;
3+
using BetterGenshinImpact.GameTask.Common.BgiVision;
34

45
namespace BetterGenshinImpact.GameTask.Common.Map;
56

@@ -119,7 +120,7 @@ static Point Midpoint(Point p1, Point p2)
119120

120121
public static int GameAngle2(string path)
121122
{
122-
var mat = Cv2.ImRead(path);
123+
var mat = Bv.ImRead(path);
123124
return Compute(mat);
124125
}
125126
}

BetterGenshinImpact/GameTask/Common/Map/Maps/Base/BaseMapLayerByTemplateMatch.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
using OpenCvSharp;
1010
using System.Text.Json.Serialization;
1111
using BetterGenshinImpact.Core.Recognition.OpenCv.TemplateMatch;
12+
using BetterGenshinImpact.GameTask.Common.BgiVision;
1213

1314
namespace BetterGenshinImpact.GameTask.Common.Map.Maps.Base;
1415

@@ -33,12 +34,12 @@ public void LoadLayer(string layerDir)
3334
SpeedTimer speedTimer = new($"加载 {LayerId} 地图图片");
3435
var colorMapFileName = LayerId + "_color" + ".webp";
3536
var colorMapPath = Path.Combine(layerDir, colorMapFileName);
36-
var coarseColorMap = Cv2.ImRead(colorMapPath)?? throw new Exception($"彩色分层地图 {LayerId} 读取失败");
37+
var coarseColorMap = Bv.ImRead(colorMapPath)?? throw new Exception($"彩色分层地图 {LayerId} 读取失败");
3738
speedTimer.Record("精确匹配用彩图");
3839
CoarseColorMatcher = new FastSqDiffMatcher(coarseColorMap, new Size(52, 52));
3940
var grayMapFileName = LayerId + "_gray" + (IsOverSize ? ".png" : ".webp");
4041
var grayMapPath = Path.Combine(layerDir, grayMapFileName);
41-
FineGrayMap = Cv2.ImRead(grayMapPath, ImreadModes.Grayscale)?? throw new Exception($"灰度分层地图 {LayerId} 读取失败");
42+
FineGrayMap = Bv.ImRead(grayMapPath, ImreadModes.Grayscale)?? throw new Exception($"灰度分层地图 {LayerId} 读取失败");
4243
speedTimer.Record("粗匹配用灰度图");
4344
speedTimer.DebugPrint();
4445
}

0 commit comments

Comments
 (0)