mirror of
https://github.com/babalae/better-genshin-impact.git
synced 2026-03-15 07:43:20 +08:00
去除所有 Cv2.ImRead ,解决中文路径问题
This commit is contained in:
@@ -7,6 +7,7 @@ using System.Linq;
|
||||
using BetterGenshinImpact.Core.Config;
|
||||
using BetterGenshinImpact.Core.Recognition.OCR.Engine;
|
||||
using BetterGenshinImpact.Core.Recognition.ONNX;
|
||||
using BetterGenshinImpact.GameTask.Common.BgiVision;
|
||||
using OpenCvSharp;
|
||||
using OpenCvSharp.Extensions;
|
||||
using YamlDotNet.Core;
|
||||
@@ -247,7 +248,7 @@ public class PaddleOcrService : IOcrService, IOcrMatchService, IDisposable
|
||||
_localRecModel = modelsRec;
|
||||
|
||||
// 预热模型
|
||||
using var preHeatImageMat = Cv2.ImRead(modelType.PreHeatImagePath) ??
|
||||
using var preHeatImageMat = Bv.ImRead(modelType.PreHeatImagePath) ??
|
||||
throw new FileNotFoundException($"预热图片未找到: {modelType.PreHeatImagePath}");
|
||||
// Debug输出结果
|
||||
var preHeatResult = RunAll(preHeatImageMat, 1);
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using BetterGenshinImpact.GameTask.Common.BgiVision;
|
||||
using BetterGenshinImpact.Helpers;
|
||||
using OpenCvSharp;
|
||||
|
||||
@@ -24,7 +25,7 @@ public static class Feature2DExtensions
|
||||
public static void SaveFeatures(this Feature2D feature2D, string trainImagePath, string trainKeyPointsPath, string trainDescriptorsPath)
|
||||
{
|
||||
Mat trainDescriptors = new();
|
||||
var img = Cv2.ImRead(trainImagePath, ImreadModes.Grayscale);
|
||||
var img = Bv.ImRead(trainImagePath, ImreadModes.Grayscale);
|
||||
|
||||
feature2D.DetectAndCompute(img, null, out var trainKeyPoints, trainDescriptors);
|
||||
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
using System.Threading;
|
||||
using System.IO;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using BetterGenshinImpact.Core.Recognition;
|
||||
using BetterGenshinImpact.GameTask.Model.Area;
|
||||
using OpenCvSharp;
|
||||
|
||||
namespace BetterGenshinImpact.GameTask.Common.BgiVision;
|
||||
|
||||
@@ -10,6 +12,12 @@ namespace BetterGenshinImpact.GameTask.Common.BgiVision;
|
||||
/// </summary>
|
||||
public static partial class Bv
|
||||
{
|
||||
|
||||
public static Mat ImRead(string fileName, ImreadModes flags = ImreadModes.Color)
|
||||
{
|
||||
return Mat.FromStream(File.OpenRead(fileName), flags);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 等待图像被找到
|
||||
/// </summary>
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using OpenCvSharp;
|
||||
using System;
|
||||
using BetterGenshinImpact.GameTask.Common.BgiVision;
|
||||
|
||||
namespace BetterGenshinImpact.GameTask.Common.Map;
|
||||
|
||||
@@ -119,7 +120,7 @@ public class CharacterOrientation
|
||||
|
||||
public static int GameAngle2(string path)
|
||||
{
|
||||
var mat = Cv2.ImRead(path);
|
||||
var mat = Bv.ImRead(path);
|
||||
return Compute(mat);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,6 +9,7 @@ using BetterGenshinImpact.Helpers;
|
||||
using OpenCvSharp;
|
||||
using System.Text.Json.Serialization;
|
||||
using BetterGenshinImpact.Core.Recognition.OpenCv.TemplateMatch;
|
||||
using BetterGenshinImpact.GameTask.Common.BgiVision;
|
||||
|
||||
namespace BetterGenshinImpact.GameTask.Common.Map.Maps.Base;
|
||||
|
||||
@@ -33,12 +34,12 @@ public class BaseMapLayerByTemplateMatch
|
||||
SpeedTimer speedTimer = new($"加载 {LayerId} 地图图片");
|
||||
var colorMapFileName = LayerId + "_color" + ".webp";
|
||||
var colorMapPath = Path.Combine(layerDir, colorMapFileName);
|
||||
var coarseColorMap = Cv2.ImRead(colorMapPath)?? throw new Exception($"彩色分层地图 {LayerId} 读取失败");
|
||||
var coarseColorMap = Bv.ImRead(colorMapPath)?? throw new Exception($"彩色分层地图 {LayerId} 读取失败");
|
||||
speedTimer.Record("精确匹配用彩图");
|
||||
CoarseColorMatcher = new FastSqDiffMatcher(coarseColorMap, new Size(52, 52));
|
||||
var grayMapFileName = LayerId + "_gray" + (IsOverSize ? ".png" : ".webp");
|
||||
var grayMapPath = Path.Combine(layerDir, grayMapFileName);
|
||||
FineGrayMap = Cv2.ImRead(grayMapPath, ImreadModes.Grayscale)?? throw new Exception($"灰度分层地图 {LayerId} 读取失败");
|
||||
FineGrayMap = Bv.ImRead(grayMapPath, ImreadModes.Grayscale)?? throw new Exception($"灰度分层地图 {LayerId} 读取失败");
|
||||
speedTimer.Record("粗匹配用灰度图");
|
||||
speedTimer.DebugPrint();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user