You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
99 lines
2.6 KiB
99 lines
2.6 KiB
#ifndef DETECTIONDATA_H
|
|
#define DETECTIONDATA_H
|
|
|
|
#include <QObject>
|
|
#include <QString>
|
|
#include <QDateTime>
|
|
#include <QTimer>
|
|
#include <QVector>
|
|
#include <QStringList>
|
|
#include <QVector3D>
|
|
|
|
/**
|
|
* 检测目标信息结构
|
|
* 用于存储单个检测目标的详细信息
|
|
*/
|
|
struct DetectionTarget {
|
|
QString type; // 目标类型(人员、车辆、建筑物等)
|
|
QString id; // 目标ID
|
|
float confidence; // 置信度
|
|
QVector3D position; // 位置信息
|
|
QVector3D size; // 尺寸信息
|
|
QDateTime timestamp; // 检测时间
|
|
|
|
DetectionTarget() : confidence(0.0f) {}
|
|
DetectionTarget(const QString& t, const QString& i, float c)
|
|
: type(t), id(i), confidence(c) {
|
|
timestamp = QDateTime::currentDateTime();
|
|
}
|
|
};
|
|
|
|
/**
|
|
* 检测数据模型类
|
|
* 用于管理实时检测信息,包括目标检测、状态更新等
|
|
*/
|
|
class DetectionData : public QObject {
|
|
Q_OBJECT
|
|
|
|
public:
|
|
explicit DetectionData(QObject* parent = nullptr);
|
|
~DetectionData();
|
|
|
|
// 检测状态
|
|
enum DetectionStatus {
|
|
IDLE, // 空闲
|
|
DETECTING, // 检测中
|
|
PROCESSING, // 处理中
|
|
ERROR // 错误
|
|
};
|
|
|
|
// 获取检测信息
|
|
QVector<DetectionTarget> getTargets() const { return targets_; }
|
|
DetectionStatus getStatus() const { return status_; }
|
|
float getAccuracy() const { return accuracy_; }
|
|
QDateTime getLastUpdate() const { return lastUpdate_; }
|
|
QString getStatusText() const;
|
|
|
|
// 设置检测信息
|
|
void setStatus(DetectionStatus status);
|
|
void setAccuracy(float accuracy);
|
|
void addTarget(const DetectionTarget& target);
|
|
void removeTarget(const QString& targetId);
|
|
void clearTargets();
|
|
|
|
// 模拟检测数据更新
|
|
void startSimulation();
|
|
void stopSimulation();
|
|
void updateSimulation();
|
|
|
|
signals:
|
|
void detectionUpdated();
|
|
void statusChanged(DetectionStatus status);
|
|
void targetAdded(const DetectionTarget& target);
|
|
void targetRemoved(const QString& targetId);
|
|
|
|
private slots:
|
|
void onSimulationTimer();
|
|
|
|
private:
|
|
QVector<DetectionTarget> targets_;
|
|
DetectionStatus status_;
|
|
float accuracy_;
|
|
QDateTime lastUpdate_;
|
|
|
|
// 模拟数据更新
|
|
QTimer* simulationTimer_;
|
|
int simulationStep_;
|
|
|
|
// 模拟目标类型列表
|
|
QStringList targetTypes_;
|
|
QStringList targetIds_;
|
|
|
|
void generateRandomTarget();
|
|
void updateTargetPositions();
|
|
QString getRandomTargetType();
|
|
QString getRandomTargetId();
|
|
};
|
|
|
|
#endif // DETECTIONDATA_H
|