sequenz.h 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. #ifndef SEQUENZ_H
  2. #define SEQUENZ_H
  3. #include <QString>
  4. #include <kamera.h>
  5. #include <object.h>
  6. #include <QList>
  7. #include <QLabel>
  8. /*
  9. * Verwaltet alle Daten einer Bildsequenz
  10. */
  11. class Sequenz
  12. {
  13. public:
  14. // Eine Datenstruktur, welche eine Objekt-Klasse repräsentiert
  15. struct SegmentationClass
  16. {
  17. int id;
  18. QString name;
  19. };
  20. private:
  21. QString path; // Der Pfad zum Ordner der Sequenz
  22. int ref; // Reference Counting
  23. int frameIndex; // Der Index des ausgewählten Bildes
  24. int cameraIndex; // Der Index der ausgewählten Kamera
  25. QList< Kamera* > cams; // Eine Liste mit Kameras
  26. QList< Object > objects; // Eine Liste mit Objekten
  27. QList< SegmentationClass > classes; // Eine Liste mit Objekt Klassen
  28. public:
  29. Sequenz( QString p, QList< Kamera* > c, QList< Object > pa );
  30. ~Sequenz();
  31. // Gibt eine Liste mit allen bekannten Objekt Klassen zurück
  32. QList< SegmentationClass > getClasses() const;
  33. // Setzt den Namen der Objekt Klasse mit der ID id auf name
  34. bool setClassName( int id, QString name );
  35. // Prüft, ob bereits annotierte Objekte in der Sequenz vorhanden sind
  36. bool hasAnnotatedObjects() const;
  37. // Gibt den Namen der Objekt Klasse mit der ID id zurück
  38. QString getClassName( int id ) const;
  39. // Gibt die ID der Objekt Klasse mit dem Namen name zurück
  40. int getClassId( QString name ) const;
  41. // Gibt die ID der Klasse des Objektes mit der ID objektId zurück
  42. int getClassOfObject( QString objektId ) const;
  43. // Setzt die ID der Klasse des Objektes mit der ID objektId auf classId
  44. void setClassOfObject( QString objektId, int classId );
  45. // Fügt eine neue Objekt Klasse mit Namen name hinzu
  46. int addClass( QString name );
  47. // Entfernt die Objektklasse mit der ID id
  48. bool removeClass( int id );
  49. // Wählt das frame-te Bild der cam-ten Kamera aus
  50. void selectFrame( int cam, int frame );
  51. // Gibt das ausgewählte Bild zurück
  52. Frame *getFrame() const;
  53. // Gibt das vom ausgewählten Bild um offset Bilder entfernte Bild zurück
  54. Frame *getFrame( int offset ) const;
  55. // Gibt den Index der ausgewählten Kamera zurück
  56. int getSelectedCamera() const;
  57. // Gibt den Index des Ausgewählten Bildes (innerhalb der Kamera) zurück
  58. int getSelectedFrame() const;
  59. // Gibt eine Liste mit Kameras zurück
  60. const QList< Kamera* > &getCameras() const;
  61. // Wählt das nachfolgende Bild aus
  62. void nextFrame();
  63. // Wählt das vorherige Bild aus
  64. void previousFrame();
  65. // Gibt 1 zurück, wenn in der Sequenz ein nachfolgendes Bild existiert
  66. bool hasNextFrame() const;
  67. // Gibt 1 zurück, wenn in der Sequenz ein vorheriges Bild existiert
  68. bool hasPreviousFrame() const;
  69. // Gibt eine Liste mit allen vergebenen ObjektIds zurück
  70. QList< QString > getObjectNames() const;
  71. // Gibt die größte vergebene Objekt Id zurück;
  72. int getMaxObjectId() const;
  73. // Gibt von dem ausgewählten Bild aus das count-nächste Bild von dem Objekt mit ID objektId zurück.
  74. QImage previousObjectImage( QString objektId, int count = 1 ) const;
  75. // Fügt eine neue ObjektID mit der Klassen ID classID hinzu
  76. void addObjectName( QString objektId, int classId );
  77. // Fügt eine neue ObjektID hinzu
  78. void addObjectName( QString objektId );
  79. // Speichert die Sequenz.
  80. // status: Ein Label, in denen Fortschrittsinformationen geschrieben werden
  81. void saveToPath( QLabel *status ) const;
  82. // Erhöht den Reference Counter um 1
  83. void refNew();
  84. // Verringert den Reference Counter um 1 (bei 0 löscht sich das Objekt selbst)
  85. void refRelease();
  86. };
  87. #endif // SEQUENZ_H