#ifndef PARKINGSPACEGUIDE_DETECTPRESENTER_H #define PARKINGSPACEGUIDE_DETECTPRESENTER_H #include #include #include #include #include "IRsLidarDevice.h" #include "IYParkingSpaceGuideStatus.h" class AapgsModelClassifier; 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(); ~DetectPresenter(); DetectPresenter(const DetectPresenter&) = delete; DetectPresenter& operator=(const DetectPresenter&) = delete; 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); private: std::unique_ptr m_modelClassifier; }; #endif // PARKINGSPACEGUIDE_DETECTPRESENTER_H