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); }