using XP.ImageProcessing.Core.Alignment;
namespace XP.ImageProcessing.Processors;
///
/// 将 TemplateMatchLib 匹配结果转换为对齐工具使用的 。
///
public static class TemplateMatchAlignmentExtensions
{
public static Pose2D ToPose2D(this TM_Result result)
=> new(result.CenterX, result.CenterY, result.Angle);
/// 四角质心是否与 Center 一致(容差默认 1 像素)。
public static bool IsCenterConsistentWithCorners(this TM_Result result, double tolerancePixels = 1.0)
=> RoiAlignment.IsMatchCenterConsistentWithCorners(
result.CenterX,
result.CenterY,
result.LtX,
result.LtY,
result.RtX,
result.RtY,
result.RbX,
result.RbY,
result.LbX,
result.LbY,
tolerancePixels);
/// 从 RotatedTemplateMatching 的 OutputData 读取测量位姿。
public static bool TryReadMeasuredPose(
IReadOnlyDictionary? outputData,
out Pose2D measuredPose,
out string? errorMessage,
int matchIndex = 0)
=> TemplateMatchOutputReader.TryReadMeasuredPose(outputData, out measuredPose, out errorMessage, matchIndex);
/// 用匹配结果 + 示教配方一步得到对齐后的 ROI。
public static RoiAlignmentResult AlignRecipe(
AlignmentRecipe recipe,
IReadOnlyDictionary? templateMatchOutput,
int matchIndex = 0)
=> RoiAlignmentApplier.ApplyFromTemplateMatchOutput(recipe, templateMatchOutput, matchIndex);
}