ICalibrationVisionProvider.cs 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. using System.Threading.Tasks;
  2. using System.Windows;
  3. using TeamAAS.Camera.Images;
  4. namespace TeamAAS.Vision.Calibration.Interfaces
  5. {
  6. /// <summary>
  7. /// 标定视觉取点契约:由各视觉引擎插件(VisionPro/VM/Halcon)实现,
  8. /// 让标定算法与具体视觉库解耦——算法只"给图取点",引擎可整体替换。
  9. ///
  10. /// 分层约定:
  11. /// - 契约只依赖通用图像类 <see cref="GenImage"/> 与 WPF 基础类型,不依赖任何引擎 SDK;
  12. /// - 具体实现放在各引擎插件类库(如 Plugins.Vpp),SDK 只被插件引用;
  13. /// - 算法服务通过 <c>VisualEngineManager.Instance.Current as ICalibrationVisionProvider</c> 取用;
  14. /// 未实现本接口的引擎可回退到手动标定页。
  15. /// </summary>
  16. public interface ICalibrationVisionProvider
  17. {
  18. /// <summary>标定图像操作区(标定向导嵌入,随引擎切换)。</summary>
  19. FrameworkElement GetCalibrationView();
  20. /// <summary>
  21. /// 在图像上运行当前标定工具,返回找到的特征点(像素坐标)。
  22. /// found=false 表示未找到;px/py 为像素坐标;angle 为特征朝向(度,无则 0)。
  23. /// </summary>
  24. Task<(bool found, double px, double py, double angle)> FindCalibPoint(GenImage image);
  25. /// <summary>
  26. /// 畸变校正(可选)。默认实现原样返回;需要棋盘格校正的引擎自行实现。
  27. /// </summary>
  28. Task<GenImage> Undistort(GenImage image);
  29. /// <summary>当前标定工具的运行时句柄(引擎私有对象)。</summary>
  30. object CurrentTool { get; }
  31. /// <summary>当前标定工具的持久化引用(如 .vpp 路径)。</summary>
  32. string ToolRef { get; set; }
  33. /// <summary>从持久化引用加载标定工具;引用为空时加载引擎默认标定工具模板。</summary>
  34. void LoadTool(string toolRef);
  35. /// <summary>将当前标定工具保存到指定目录,返回可供 <see cref="ToolRef"/> 持久化的引用。</summary>
  36. string SaveTool(string directory);
  37. }
  38. }