test map track

This commit is contained in:
辉鸭蛋
2024-06-23 22:17:32 +08:00
parent d77bb68066
commit 8469f6c37e
5 changed files with 49 additions and 3 deletions

View File

@@ -56,5 +56,11 @@
Height="23"
Click="AutoCookTestCase"
Content="自动烹饪图像测试" />
<Button Canvas.Left="10"
Canvas.Top="250"
Width="100"
Height="23"
Click="MapPathView"
Content="路线地图查看" />
</Canvas>
</Window>

View File

@@ -4,6 +4,7 @@ using BetterGenshinImpact.GameTask.Common.Map;
using BetterGenshinImpact.Test.Dataset;
using BetterGenshinImpact.Test.Simple;
using BetterGenshinImpact.Test.Simple.AllMap;
using BetterGenshinImpact.Test.Simple.Track;
using BetterGenshinImpact.Test.View;
namespace BetterGenshinImpact.Test;
@@ -65,4 +66,9 @@ public partial class MainWindow : Window
{
AutoCookTest.Test();
}
private void MapPathView(object sender, RoutedEventArgs e)
{
MapPathTest.Test();
}
}

View File

@@ -0,0 +1,34 @@
using BetterGenshinImpact.Core.Config;
using BetterGenshinImpact.Core.Recognition.OpenCv;
using BetterGenshinImpact.GameTask.AutoTrackPath.Model;
using BetterGenshinImpact.GameTask.Common.Element.Assets;
using BetterGenshinImpact.Service;
using OpenCvSharp;
using System.IO;
using System.Text.Json;
namespace BetterGenshinImpact.Test.Simple.Track;
internal class MapPathTest
{
public static void Test()
{
var wayJson = File.ReadAllText(Global.Absolute(@"log\way\yl3.json"));
var way = JsonSerializer.Deserialize<GiPath>(wayJson, ConfigService.JsonOptions) ?? throw new Exception("way json deserialize failed");
var points = way.WayPointList.Select(giPathPoint => giPathPoint.MatchRect.GetCenterPoint()).ToList();
var pointsRect = Cv2.BoundingRect(points);
var allMap = new Mat(@"E:\HuiTask\更好的原神\地图匹配\有用的素材\mainMap2048Block.png");
// 按顺序连线,每个点都画圈
for (var i = 0; i < points.Count - 1; i++)
{
Cv2.Line(allMap, points[i], points[i + 1], Scalar.Red, 1);
Cv2.Circle(allMap, points[i], 3, Scalar.Red, -1);
}
var map = allMap[new Rect(pointsRect.X - 100, pointsRect.Y - 100, pointsRect.Width + 200, pointsRect.Height + 200)];
Cv2.ImShow("map", map);
}
}

View File

@@ -66,7 +66,7 @@ public class AutoTrackPathTask
var json = File.ReadAllText(Global.Absolute(@"GameTask\AutoTrackPath\Assets\tp.json"));
_tpPositions = JsonSerializer.Deserialize<List<GiWorldPosition>>(json, ConfigService.JsonOptions) ?? throw new Exception("tp.json deserialize failed");
var wayJson = File.ReadAllText(Global.Absolute(@"log\way\way2.json"));
var wayJson = File.ReadAllText(Global.Absolute(@"log\way\yl3.json"));
_way = JsonSerializer.Deserialize<GiPath>(wayJson, ConfigService.JsonOptions) ?? throw new Exception("way json deserialize failed");
}

View File

@@ -27,9 +27,9 @@ public class GiPath
{
var lastPoint = WayPointList[^1];
var distance = MathHelper.Distance(giPathPoint.Pt, lastPoint.Pt);
if (distance < 10)
if (distance == 0 || distance > 50)
{
Debug.WriteLine($"距离上个点太近: {distance},舍弃");
Debug.WriteLine($"距离上个点太近或者太远: {distance},舍弃");
return;
}
}