#pragma once #include #include #include #include #include namespace eui_frameworkSdk { // 分类模型的单张推理结果。 struct ClassificationResult { int classes = -1; // 类别索引。 double prob = 0.0; // 类别概率。 }; // 检测结果中的关键点坐标。 struct DetectionPoint { float x = 0.0F; float y = 0.0F; }; // 目标检测模型的单个目标结果。 struct DetectionResult { float x = 0.0F; float y = 0.0F; float w = 0.0F; float h = 0.0F; DetectionPoint points[4]{}; // 四边形目标的四个顶点。 float score = 0.0F; // 目标置信度。 int classes = -1; // 类别索引。 }; // 分割模型接口。 class ISegmentationModel { public: // 释放分割模型。 virtual ~ISegmentationModel() = default; // 执行单张分割推理。 virtual cv::Mat Evaluate(const cv::Mat& input) = 0; // 批量执行分割推理。 virtual std::vector bunchEvaluate(const std::vector& input) = 0; }; // 分类模型接口。 class IClassificationModel { public: // 释放分类模型。 virtual ~IClassificationModel() = default; // 执行单张分类推理。 virtual ClassificationResult Evaluate(const cv::Mat& input) = 0; // 批量执行分类推理。 virtual std::vector bunchEvaluate(const std::vector& input) = 0; }; // 目标检测模型接口。 class IDetectionModel { public: // 释放检测模型。 virtual ~IDetectionModel() = default; // 执行单张目标检测推理。 virtual std::vector Evaluate(const cv::Mat& input) = 0; // 批量执行目标检测推理。 virtual std::vector> bunchEvaluate( const std::vector& input) = 0; }; // AI 模型加载管理接口。 class IHandleAiManager { public: // 释放模型管理器。 virtual ~IHandleAiManager() = default; // 加载分割模型。 virtual std::shared_ptr loadSegModel( const std::string& path, int batchSize, int gpuId, const QString& description) = 0; // 加载分类模型。 virtual std::shared_ptr loadClsModel( const std::string& path, int batchSize, int gpuId, const QString& description) = 0; // 加载目标检测模型。 virtual std::shared_ptr loadDetModel( const std::string& path, int batchSize, int gpuId, const QString& description) = 0; }; }