75 lines
1.8 KiB
C++
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
|