74 lines
1.9 KiB
C#
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; }
|
|
}
|