Files
XplorePlane/XP.Camera/Calibration/ICalibrationCaptureService.cs
T

74 lines
1.9 KiB
C#

using System.Drawing;
using System.Windows.Media.Imaging;
namespace XP.Camera.Calibration;
/// <summary>
/// 标定采集服务接口
/// 提供"一键采集"能力:读取编码器坐标 + 拍图 + 识别标记中心
/// </summary>
public interface ICalibrationCaptureService
{
/// <summary>是否可用(相机已连接、运动系统就绪)</summary>
bool IsAvailable { get; }
/// <summary>
/// 采集当前标定点
/// </summary>
/// <returns>采集结果,失败时返回 null</returns>
CaptureResult? CaptureCurrentPoint();
/// <summary>
/// 获取当前导航相机图像
/// </summary>
BitmapSource? CaptureImage();
/// <summary>
/// 启动实时预览(将相机实时画面推送到 LiveImageUpdated 事件)
/// </summary>
void StartLivePreview();
/// <summary>
/// 停止实时预览
/// </summary>
void StopLivePreview();
/// <summary>
/// 实时画面更新事件
/// </summary>
event EventHandler<LiveImageEventArgs>? LiveImageUpdated;
}
/// <summary>
/// 实时画面事件参数
/// </summary>
public class LiveImageEventArgs : EventArgs
{
public BitmapSource Image { get; }
public LiveImageEventArgs(BitmapSource image) => Image = image;
}
/// <summary>
/// 单次采集结果
/// </summary>
public class CaptureResult
{
/// <summary>标记中心像素坐标 X(亚像素)</summary>
public double PixelX { get; set; }
/// <summary>标记中心像素坐标 Y(亚像素)</summary>
public double PixelY { get; set; }
/// <summary>平台编码器坐标 X (mm)</summary>
public double WorldX { get; set; }
/// <summary>平台编码器坐标 Y (mm)</summary>
public double WorldY { get; set; }
/// <summary>采集的图像</summary>
public BitmapSource? Image { get; set; }
/// <summary>检测到的标记轮廓点集</summary>
public System.Drawing.Point[]? ContourPoints { get; set; }
}