#pragma once #include #include #include #include #include #include "aienginedefinitions.h" const int INFERENCE_SQUARE_WIDTH = 640; const int INFERENCE_SQUARE_HEIGHT = 640; class AiEngineObject { public: AiEngineRectangle rectangle; float propability; int classId; QString classStr; }; class AiEngineInferenceResult { public: cv::Mat frame; QVector objects; }; class AiEngineInference : public QObject { Q_OBJECT public: explicit AiEngineInference(QString modelPath, QObject *parent = nullptr); bool isActive(void); protected: cv::Mat resizeAndPad(const cv::Mat& src); QString mModelPath; bool mActive; int mNumber; QVector mClassNames; public slots: virtual void performInferenceSlot(cv::Mat frame) = 0; virtual void initialize(int number) = 0; signals: void resultsReady(AiEngineInferenceResult results); };