2026-07-14 17:14:55 +08:00

75 lines
1.8 KiB
C++

#ifndef PARKINGSPACEGUIDE_DETECTPRESENTER_H
#define PARKINGSPACEGUIDE_DETECTPRESENTER_H
#include <QByteArray>
#include <QImage>
#include <QString>
#include "IRsLidarDevice.h"
#include "IYParkingSpaceGuideStatus.h"
enum class AirplanePresenceState
{
NotDetected,
Detected,
GateBlocked,
ViewBlocked
};
struct AirplanePresenceResult
{
AirplanePresenceState state = AirplanePresenceState::NotDetected;
QString message;
};
struct ParkingGuideAlgorithmState
{
QByteArray algorithmData;
QString modelType;
double modelConfidence = 0.0;
bool modelVerified = false;
int modelRecognitionAttempts = 0;
};
struct ParkingGuideAlgorithmControl
{
ParkingGuideAlgorithmState nextState;
QByteArray recognitionContext;
bool needModelRecognition = false;
};
struct ModelRecognitionResult
{
QString modelType;
double confidence = 0.0;
QString message;
bool verified = false;
bool IsVerified(double minimumConfidence) const;
};
class DetectPresenter
{
public:
DetectPresenter() = default;
~DetectPresenter() = default;
static QString GetAlgoVersion();
int DetectAirplanePresence(const RsCloudData& cloud,
const VrAlgorithmParams& algorithmParams,
AirplanePresenceResult& result);
int DetectParkingSpaceGuide(const RsCloudData& cloud,
const VrAlgorithmParams& algorithmParams,
const ParkingGuideAlgorithmState& previousState,
DetectionResult& result,
ParkingGuideAlgorithmControl& control);
int RecognizeModel2D(const QImage& frame,
const QByteArray& recognitionContext,
ModelRecognitionResult& result);
};
#endif // PARKINGSPACEGUIDE_DETECTPRESENTER_H