using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Check.Main.Infer { public interface IDetector : IDisposable { /// /// 初始化检测器。 /// /// 模型文件路径(对于传统算法可能是模板目录) /// 特定于检测器的设置对象(可选,可以用于传递阈值等) void Initialize(string modelPath, object detectionSettings = null); /// /// 执行图像检测。 /// /// 待检测的图像。 /// 包含检测结果(如OK/NG,得分,边界框等)的统一对象。 DetectionResult Detect(Bitmap image); } /// /// 统一的检测结果类。 /// public class DetectionResult { public bool IsOk { get; set; } public string Message { get; set; } public double Score { get; set; } public List BoundingBoxes { get; set; } // 深度学习可能返回多个目标框 // 如果需要,可以添加带有绘制结果的图像 public Bitmap ResultImage { get; set; } public DetectionResult(bool isOk, string message = "Unknown", double score = 0.0, List boundingBoxes = null, Bitmap resultImage = null) { IsOk = isOk; Message = message; Score = score; BoundingBoxes = boundingBoxes ?? new List(); ResultImage = resultImage; } } //// 辅助设置类,用于传递给 HalconTemplateDetector //public class HalconDetectionSettings //{ // public double ScoreThreshold { get; set; } = 0.5; //} // 辅助设置类,用于传递给 YoloDetector public class YoloDetectionSettings { public float ConfidenceThreshold { get; set; } = 0.25f; public float NmsThreshold { get; set; } = 0.45f; } }