#ifndef SEQUENZ_H #define SEQUENZ_H #include #include #include #include #include /* * Verwaltet alle Daten einer Bildsequenz */ class Sequenz { public: // Eine Datenstruktur, welche eine Objekt-Klasse repräsentiert struct SegmentationClass { int id; QString name; }; private: QString path; // Der Pfad zum Ordner der Sequenz int ref; // Reference Counting int frameIndex; // Der Index des ausgewählten Bildes int cameraIndex; // Der Index der ausgewählten Kamera QList< Kamera* > cams; // Eine Liste mit Kameras QList< Object > objects; // Eine Liste mit Objekten QList< SegmentationClass > classes; // Eine Liste mit Objekt Klassen public: Sequenz( QString p, QList< Kamera* > c, QList< Object > pa ); ~Sequenz(); // Gibt eine Liste mit allen bekannten Objekt Klassen zurück QList< SegmentationClass > getClasses() const; // Setzt den Namen der Objekt Klasse mit der ID id auf name bool setClassName( int id, QString name ); // Prüft, ob bereits annotierte Objekte in der Sequenz vorhanden sind bool hasAnnotatedObjects() const; // Gibt den Namen der Objekt Klasse mit der ID id zurück QString getClassName( int id ) const; // Gibt die ID der Objekt Klasse mit dem Namen name zurück int getClassId( QString name ) const; // Gibt die ID der Klasse des Objektes mit der ID objektId zurück int getClassOfObject( QString objektId ) const; // Setzt die ID der Klasse des Objektes mit der ID objektId auf classId void setClassOfObject( QString objektId, int classId ); // Fügt eine neue Objekt Klasse mit Namen name hinzu int addClass( QString name ); // Entfernt die Objektklasse mit der ID id bool removeClass( int id ); // Wählt das frame-te Bild der cam-ten Kamera aus void selectFrame( int cam, int frame ); // Gibt das ausgewählte Bild zurück Frame *getFrame() const; // Gibt das vom ausgewählten Bild um offset Bilder entfernte Bild zurück Frame *getFrame( int offset ) const; // Gibt den Index der ausgewählten Kamera zurück int getSelectedCamera() const; // Gibt den Index des Ausgewählten Bildes (innerhalb der Kamera) zurück int getSelectedFrame() const; // Gibt eine Liste mit Kameras zurück const QList< Kamera* > &getCameras() const; // Wählt das nachfolgende Bild aus void nextFrame(); // Wählt das vorherige Bild aus void previousFrame(); // Gibt 1 zurück, wenn in der Sequenz ein nachfolgendes Bild existiert bool hasNextFrame() const; // Gibt 1 zurück, wenn in der Sequenz ein vorheriges Bild existiert bool hasPreviousFrame() const; // Gibt eine Liste mit allen vergebenen ObjektIds zurück QList< QString > getObjectNames() const; // Gibt die größte vergebene Objekt Id zurück; int getMaxObjectId() const; // Gibt von dem ausgewählten Bild aus das count-nächste Bild von dem Objekt mit ID objektId zurück. QImage previousObjectImage( QString objektId, int count = 1 ) const; // Fügt eine neue ObjektID mit der Klassen ID classID hinzu void addObjectName( QString objektId, int classId ); // Fügt eine neue ObjektID hinzu void addObjectName( QString objektId ); // Speichert die Sequenz. // status: Ein Label, in denen Fortschrittsinformationen geschrieben werden void saveToPath( QLabel *status ) const; // Erhöht den Reference Counter um 1 void refNew(); // Verringert den Reference Counter um 1 (bei 0 löscht sich das Objekt selbst) void refRelease(); }; #endif // SEQUENZ_H