Files
better-genshin-impact/Test/BetterGenshinImpact.Test/Simple/AllMap/BigMapMatchTest.cs
2025-02-23 22:03:52 +08:00

48 lines
1.8 KiB
C#

using BetterGenshinImpact.Core.Recognition.OpenCv.FeatureMatch;
using BetterGenshinImpact.GameTask.Common.Element.Assets;
using BetterGenshinImpact.Helpers;
using OpenCvSharp;
using OpenCvSharp.Detail;
using System.Diagnostics;
using System.Windows.Forms;
using BetterGenshinImpact.Core.Recognition.OpenCv;
using BetterGenshinImpact.Helpers.Extensions;
namespace BetterGenshinImpact.Test.Simple.AllMap;
public class BigMapMatchTest
{
public static void Test()
{
SpeedTimer speedTimer = new();
// var mainMap100BlockMat = new Mat(@"D:\HuiPrograming\Projects\CSharp\MiHoYo\BetterGenshinImpact\BetterGenshinImpact\Assets\Map\mainMap100Block.png", ImreadModes.Grayscale);
var map2048 = new Mat(@"E:\HuiTask\更好的原神\地图匹配\有用的素材\5.2\map_52_2048.png", ImreadModes.Grayscale);
var mainMap100BlockMat = ResizeHelper.Resize(map2048, 1d / (4 * 2));
Cv2.ImWrite(@"E:\HuiTask\更好的原神\地图匹配\有用的素材\mainMap128Block.png", mainMap100BlockMat);
var surfMatcher = new FeatureMatcher(mainMap100BlockMat);
var queryMat = new Mat(@"E:\HuiTask\更好的原神\地图匹配\比较\Clip_20240321_000329.png", ImreadModes.Grayscale);
speedTimer.Record("初始化特征");
queryMat = ResizeHelper.Resize(queryMat, 1d / 4);
Cv2.ImShow("queryMat", queryMat);
var p = surfMatcher.Match(queryMat);
speedTimer.Record("匹配1");
if (p.IsEmpty())
{
// var rect = Cv2.BoundingRect(pArray);
Debug.WriteLine($"Matched rect 1: {p}");
// Cv2.Rectangle(mainMap100BlockMat, rect, Scalar.Red, 2);
// Cv2.ImShow(@"b1", mainMap100BlockMat);
}
else
{
Debug.WriteLine("No match 1");
}
speedTimer.DebugPrint();
}
}