GrabBag/BeltTearingConfig/Inc/IVrBeltTearingConfig.h

151 lines
3.7 KiB
C
Raw Normal View History

#ifndef IVRBELTTEARINGCONFIG_H
#define IVRBELTTEARINGCONFIG_H
#include <string>
#include <vector>
#include <utility>
#include <algorithm>
/**
* @brief
*/
enum class BeltTearingProjectType
{
BeltTearing = 0, // 皮带撕裂检测
BeltMonitoring = 1, // 皮带监控
};
/**
* @brief
*/
struct ServerInfo
{
std::string name; // 服务器名称
std::string ip; // 服务器IP地址
int port; // 服务器端口
};
/**
* @brief
*/
struct BeltTearingParam
{
double tearThreshold = 50.0; // 撕裂阈值
double minTearLength = 100.0; // 最小撕裂长度
double maxTearWidth = 30.0; // 最大撕裂宽度
};
/**
* @brief
*/
struct ImageProcessingParam
{
int blurSize = 5; // 模糊核大小
int cannyThreshold1 = 50; // Canny边缘检测阈值1
int cannyThreshold2 = 150; // Canny边缘检测阈值2
int morphologySize = 3; // 形态学操作核大小
};
/**
* @brief
*/
struct MonitoringParam
{
int checkInterval = 1000; // 检查间隔(毫秒)
int alertThreshold = 3; // 报警阈值
int maxHistorySize = 100; // 最大历史记录大小
};
/**
* @brief
*/
struct DebugParam
{
bool enableDebug = false; // 是否开启调试模式
bool saveDebugImage = false; // 是否保存调试图像
bool printDetailLog = false; // 是否打印详细日志
std::string debugOutputPath = ""; // 调试输出路径
};
/**
* @brief
*/
struct BeltTearingAlgorithmParams
{
BeltTearingParam beltTearingParam; // 皮带撕裂检测参数
ImageProcessingParam imageProcessingParam; // 图像处理参数
MonitoringParam monitoringParam; // 监控参数
};
/**
* @brief
*/
struct BeltTearingConfigResult
{
std::vector<ServerInfo> servers; // 服务器列表
BeltTearingAlgorithmParams algorithmParams; // 算法参数
DebugParam debugParam; // 调试参数
BeltTearingProjectType projectType; // 项目类型
};
/**
* @brief
*/
class IVrBeltTearingConfigChangeNotify
{
public:
virtual ~IVrBeltTearingConfigChangeNotify() {}
/**
* @brief
* @param configResult
*/
virtual void OnConfigChanged(const BeltTearingConfigResult& configResult) = 0;
};
/**
* @brief BeltTearingConfig接口类
*/
class IVrBeltTearingConfig
{
public:
/**
* @brief
*/
virtual ~IVrBeltTearingConfig() = default;
/**
* @brief
* @return
*/
static bool CreateInstance(IVrBeltTearingConfig** ppVrConfig);
/**
* @brief
* @param filePath
* @return
*/
virtual BeltTearingConfigResult LoadConfig(const std::string& filePath) = 0;
/**
* @brief
* @param filePath
* @param configResult
* @return
*/
virtual bool SaveConfig(const std::string& filePath, BeltTearingConfigResult& configResult) = 0;
/**
* @brief
* @param notify
*/
virtual void SetConfigChangeNotify(IVrBeltTearingConfigChangeNotify* notify) = 0;
};
#endif // IVRBELTTEARINGCONFIG_H