mirror of
https://github.com/babalae/better-genshin-impact.git
synced 2026-03-20 08:29:50 +08:00
* 小地图预处理和视角识别算法优化 * 模板匹配的相关类,包括快速带遮罩的SqDiff模板匹配,模板匹配归一化类,简易亚像素模板匹配实现,小地图匹配相关配置,和小地图匹配上下文。 * 实现小地图的分层地图模板匹配,修改 SceneBaseMap 的 GetMiniMapPosition 为 virtual 以便继承覆盖。 * 优化视角识别算法, 消除图标对视角识别影响, 修正上次提交里HImg的范围错误(BGR2HLS_FULL模式下H的范围在0~255), 启用新的视角识别算法。 * 模板匹配分层地图小修改 * 启用模板匹配的分层地图
36 lines
1.1 KiB
C#
36 lines
1.1 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)
|
|
{
|
|
var (src, mask) = _maskCalculator.Process1(miniMap);
|
|
return _coCalculator.PredictRotation(src, mask);
|
|
}
|
|
|
|
public float PredictRotation(Mat miniMap)
|
|
{
|
|
return PredictRotationWithConfidence(miniMap).Item1;
|
|
}
|
|
|
|
public (Mat, Mat) GetMiniMapAndMask(Mat miniMap)
|
|
{
|
|
//Debug.WriteLine($"输入图片尺寸为{miniMap.Size()} 类型为 {miniMap.Type()}");
|
|
var (src, mask) = _maskCalculator.Process1(miniMap);
|
|
var (angle, _) = _coCalculator.PredictRotation(src, mask);
|
|
return _maskCalculator.Process2(angle);
|
|
}
|
|
|
|
public void Dispose()
|
|
{
|
|
_coCalculator.Dispose();
|
|
_maskCalculator.Dispose();
|
|
}
|
|
} |