GrabBag/App/TunnelChannel/TunnelChannelApp/IYTunnelChannelStatus.h

71 lines
2.6 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#ifndef IYTUNNELCHANNELSTATUS_H
#define IYTUNNELCHANNELSTATUS_H
#include <string>
#include <functional>
#include <vector>
#include <QImage>
#include <QMetaType>
// 使用 AppCommon 提供的通用接口和类型
#include "IVisionApplicationStatus.h"
// 隧道检测位置结构体(继承自 PositionData 模板)
struct TunnelPosition : public PositionData<double> {
// 默认构造函数
TunnelPosition() : PositionData<double>() {}
// 带参构造函数
TunnelPosition(double _x, double _y, double _z, double _roll, double _pitch, double _yaw)
: PositionData<double>(_x, _y, _z, _roll, _pitch, _yaw) {}
// 拷贝构造函数和赋值运算符
TunnelPosition(const TunnelPosition&) = default;
TunnelPosition& operator=(const TunnelPosition&) = default;
// 从 PositionData 拷贝构造
TunnelPosition(const PositionData<double>& pos)
: PositionData<double>(pos) {}
};
// 检测结果结构体(继承自 DetectionResultData 模板)
struct TunnelDetectionResult : public DetectionResultData<TunnelPosition> {
int detectionType = 0; // 检测类型0-正常1-异常
double confidence = 0.0; // 置信度
std::string alarmMessage; // 报警消息
// 2D图像来自海康相机
QImage hikImage;
// ========== 通道间距测量结果 ==========
double channelSpace = 0.0; // 通道间距 (mm)
double channelWidth[2] = {0.0, 0.0}; // 通道宽度 (mm),支持两个通道
double channelDepth[2] = {0.0, 0.0}; // 通道深度 (mm),支持两个通道
// 默认构造函数
TunnelDetectionResult() = default;
// 拷贝构造函数和赋值运算符
TunnelDetectionResult(const TunnelDetectionResult&) = default;
TunnelDetectionResult& operator=(const TunnelDetectionResult&) = default;
};
// 状态回调接口(继承自 IVisionApplicationStatus 模板)
// 使用 AppCommon 提供的通用接口,无需重复定义回调方法
// 注意2D海康相机状态使用 OnCamera2StatusChanged 更新
class IYTunnelChannelStatus : public IVisionApplicationStatus<TunnelDetectionResult>
{
public:
virtual ~IYTunnelChannelStatus() = default;
// 2D图像更新海康相机实时预览
virtual void OnHikImageUpdated(const QImage& image) = 0;
};
// 声明Qt元类型使这些结构体能够在信号槽中传递
Q_DECLARE_METATYPE(TunnelPosition)
Q_DECLARE_METATYPE(TunnelDetectionResult)
// WorkStatus 已在 IVisionApplicationStatus.h 中声明
#endif // IYTUNNELCHANNELSTATUS_H