85 lines
2.1 KiB
C
Raw Normal View History

2026-07-11 16:02:57 +08:00
#ifndef PARKINGSPACEGUIDE_DETECTPRESENTER_H
#define PARKINGSPACEGUIDE_DETECTPRESENTER_H
#include <memory>
2026-07-14 17:14:55 +08:00
#include <QByteArray>
2026-07-11 16:02:57 +08:00
#include <QImage>
#include <QString>
#include "IRsLidarDevice.h"
#include "IYParkingSpaceGuideStatus.h"
class AapgsModelClassifier;
2026-07-14 17:14:55 +08:00
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;
};
2026-07-11 16:02:57 +08:00
class DetectPresenter
{
public:
DetectPresenter();
~DetectPresenter();
DetectPresenter(const DetectPresenter&) = delete;
DetectPresenter& operator=(const DetectPresenter&) = delete;
2026-07-11 16:02:57 +08:00
static QString GetAlgoVersion();
2026-07-14 17:14:55 +08:00
int DetectAirplanePresence(const RsCloudData& cloud,
const VrAlgorithmParams& algorithmParams,
AirplanePresenceResult& result);
int DetectParkingSpaceGuide(const RsCloudData& cloud,
2026-07-11 16:02:57 +08:00
const VrAlgorithmParams& algorithmParams,
2026-07-14 17:14:55 +08:00
const ParkingGuideAlgorithmState& previousState,
DetectionResult& result,
ParkingGuideAlgorithmControl& control);
int RecognizeModel2D(const QImage& frame,
const QByteArray& recognitionContext,
ModelRecognitionResult& result);
private:
std::unique_ptr<AapgsModelClassifier> m_modelClassifier;
2026-07-11 16:02:57 +08:00
};
#endif // PARKINGSPACEGUIDE_DETECTPRESENTER_H