mirror of
https://github.com/babalae/better-genshin-impact.git
synced 2026-05-21 09:45:48 +08:00
test map track
This commit is contained in:
@@ -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>
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
34
BetterGenshinImpact.Test/Simple/Track/MapPathTest.cs
Normal file
34
BetterGenshinImpact.Test/Simple/Track/MapPathTest.cs
Normal 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);
|
||||
}
|
||||
}
|
||||
@@ -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");
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user