GrabBag/App/TireHolePose/TireHolePoseConfig/Inc/IYTireHolePoseStatus.h

84 lines
2.2 KiB
C++

#ifndef IYTIREHOLEPOSESTATUS_H
#define IYTIREHOLEPOSESTATUS_H
#include <string>
#include <functional>
#include <vector>
#include <QImage>
#include <QMetaType>
#include "IVisionApplicationStatus.h"
// WorkStatus, WorkStatusToString 已在 IVisionApplicationStatus.h 中定义
// 轮胎孔信息结构体
struct TireHoleInfo {
// 孔中心点
double centerX = 0.0;
double centerY = 0.0;
double centerZ = 0.0;
// 孔的法向量方向
double normDirX = 0.0;
double normDirY = 0.0;
double normDirZ = 0.0;
// 孔半径
double holeR = 0.0;
TireHoleInfo() = default;
TireHoleInfo(double cx, double cy, double cz,
double nx, double ny, double nz,
double r = 0.0)
: centerX(cx), centerY(cy), centerZ(cz)
, normDirX(nx), normDirY(ny), normDirZ(nz)
, holeR(r) {}
TireHoleInfo(const TireHoleInfo&) = default;
TireHoleInfo& operator=(const TireHoleInfo&) = default;
};
// 位置结构体(继承自 PositionData 模板)
struct TireHolePosition : public PositionData<double> {
TireHolePosition() : PositionData<double>() {}
TireHolePosition(double _x, double _y, double _z,
double _roll, double _pitch, double _yaw)
: PositionData<double>(_x, _y, _z, _roll, _pitch, _yaw) {}
TireHolePosition(const TireHolePosition&) = default;
TireHolePosition& operator=(const TireHolePosition&) = default;
TireHolePosition(const PositionData<double>& pos)
: PositionData<double>(pos) {}
};
// 检测结果结构体
struct DetectionResult : public DetectionResultData<TireHolePosition> {
// 轮胎孔信息列表
std::vector<TireHoleInfo> tireHoleInfoList;
bool success = true;
QString message = "检测成功";
DetectionResult() = default;
DetectionResult(const DetectionResult&) = default;
DetectionResult& operator=(const DetectionResult&) = default;
};
// 状态回调接口
class IYTireHolePoseStatus : public IVisionApplicationStatus<DetectionResult>
{
public:
virtual ~IYTireHolePoseStatus() = default;
};
Q_DECLARE_METATYPE(TireHoleInfo)
Q_DECLARE_METATYPE(TireHolePosition)
Q_DECLARE_METATYPE(DetectionResult)
#endif // IYTIREHOLEPOSESTATUS_H