mirror of
https://github.com/babalae/better-genshin-impact.git
synced 2026-03-28 09:59:49 +08:00
* 小地图预处理和视角识别算法优化 * 模板匹配的相关类,包括快速带遮罩的SqDiff模板匹配,模板匹配归一化类,简易亚像素模板匹配实现,小地图匹配相关配置,和小地图匹配上下文。 * 实现小地图的分层地图模板匹配,修改 SceneBaseMap 的 GetMiniMapPosition 为 virtual 以便继承覆盖。
36 lines
1.0 KiB
C#
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();
|
|
}
|
|
} |