65 lines
2.1 KiB
C++
65 lines
2.1 KiB
C++
#ifndef IYWORKPIECEHOLESTATUS_H
|
||
#define IYWORKPIECEHOLESTATUS_H
|
||
|
||
#include <string>
|
||
#include <functional>
|
||
#include <vector>
|
||
#include <cstdint>
|
||
#include <QImage>
|
||
#include <QMetaType>
|
||
|
||
// 使用 AppCommon 提供的通用接口和类型
|
||
#include "IVisionApplicationStatus.h"
|
||
|
||
// 算法 workpieceType 的高16位表示方向:1=反向,0=正向。
|
||
inline bool IsReversedWorkpieceType(int workpieceType)
|
||
{
|
||
const std::uint32_t packedType = static_cast<std::uint32_t>(workpieceType);
|
||
return ((packedType >> 16) & 0xFFFFu) == 1u;
|
||
}
|
||
|
||
// 孔位置结构体
|
||
struct HolePosition : public PositionData<double> {
|
||
int workpieceType = 0; // 算法原始工件类型:高16位为方向,1=反向,0=正向
|
||
|
||
// 默认构造函数
|
||
HolePosition() : PositionData<double>() {}
|
||
|
||
// 带参构造函数
|
||
HolePosition(double _x, double _y, double _z, double _roll, double _pitch, double _yaw)
|
||
: PositionData<double>(_x, _y, _z, _roll, _pitch, _yaw) {}
|
||
|
||
// 拷贝构造函数和赋值运算符
|
||
HolePosition(const HolePosition&) = default;
|
||
HolePosition& operator=(const HolePosition&) = default;
|
||
|
||
// 从 PositionData 拷贝构造
|
||
HolePosition(const PositionData<double>& pos)
|
||
: PositionData<double>(pos) {}
|
||
};
|
||
|
||
// 工件孔检测结果结构体
|
||
struct WorkpieceHoleDetectionResult : public DetectionResultData<HolePosition> {
|
||
int workpieceType = 0; // 第一个工件的算法原始类型(包含高16位方向)
|
||
|
||
// 默认构造函数
|
||
WorkpieceHoleDetectionResult() = default;
|
||
|
||
// 拷贝构造函数和赋值运算符
|
||
WorkpieceHoleDetectionResult(const WorkpieceHoleDetectionResult&) = default;
|
||
WorkpieceHoleDetectionResult& operator=(const WorkpieceHoleDetectionResult&) = default;
|
||
};
|
||
|
||
// 状态回调接口
|
||
class IYWorkpieceHoleStatus : public IVisionApplicationStatus<WorkpieceHoleDetectionResult>
|
||
{
|
||
public:
|
||
virtual ~IYWorkpieceHoleStatus() = default;
|
||
};
|
||
|
||
// 声明Qt元类型,使这些结构体能够在信号槽中传递
|
||
Q_DECLARE_METATYPE(HolePosition)
|
||
Q_DECLARE_METATYPE(WorkpieceHoleDetectionResult)
|
||
|
||
#endif // IYWORKPIECEHOLESTATUS_H
|