Files
better-genshin-impact/BetterGenshinImpact/GameTask/Common/Map/MiniMap/MiniMapPreprocessor.cs
Juemin Lin 4b5f229006 分层地图的模板匹配坐标识别以及相机视角识别优化和小地图预处理 (#1730)
* 小地图预处理和视角识别算法优化

* 模板匹配的相关类,包括快速带遮罩的SqDiff模板匹配,模板匹配归一化类,简易亚像素模板匹配实现,小地图匹配相关配置,和小地图匹配上下文。

* 实现小地图的分层地图模板匹配,修改 SceneBaseMap 的 GetMiniMapPosition 为 virtual 以便继承覆盖。
2025-06-24 10:39:16 +08:00

36 lines
1.0 KiB
C#

using System;
using System.Diagnostics;
using OpenCvSharp;
namespace BetterGenshinImpact.GameTask.Common.Map.MiniMap;
public class MiniMapPreprocessor : IDisposable
{
private static readonly MaskCalculator _maskCalculator = new();
private static readonly CameraOrientationCalculator _coCalculator = new();
public (float, float) PredictRotationWithConfidence(Mat miniMap)
{
using var mat = _maskCalculator.Process1(miniMap);
return _coCalculator.PredictRotation(mat);
}
public float PredictRotation(Mat miniMap)
{
return PredictRotationWithConfidence(miniMap).Item1;
}
public (Mat, Mat) GetMiniMapAndMask(Mat miniMap)
{
//Debug.WriteLine($"输入图片尺寸为{miniMap.Size()} 类型为 {miniMap.Type()}");
using var mat = _maskCalculator.Process1(miniMap);
var (angle, _) = _coCalculator.PredictRotation(mat);
return _maskCalculator.Process2(angle);
}
public void Dispose()
{
_coCalculator.Dispose();
_maskCalculator.Dispose();
}
}