#include "kamera.h" #include Kamera::Kamera( QString n, QString maskPath, int index ) : FrameTreeNode( index, 0, 0 ), ref( 1 ), name( n ), m( maskPath ) {} Kamera::~Kamera() { for( auto f = frames.begin(); f != frames.end(); f++ ) { delete *f; } } // Gibt 1 zurück, falls keine Objekte ohne ID existieren und auf keinem Bild eine ID mehrfach vergeben wurde bool Kamera::isCorrectAnnotated() const { for( Frame *f : frames ) { if( !f->isCorrectAnnotated() ) return false; } return true; } // Gibt this zurück void *Kamera::getNodeObject() const { return (void*)this; } // gibt die Anzahl der Bilder zurück int Kamera::getChildCount() const { return frames.size(); } // Gibt das Bild mit Index index zurück Frame *Kamera::getFrame( int index ) const { return frames.at( index ); } // fügt der Kamera das Bild f hinzu QString Kamera::getName() const { return name; } // Wendet die Maske der Kamera auf alle Bilder an void Kamera::addFrame( Frame *f ) { frames.append( f ); f->applyMask( m ); } // Gibt den Namen der Kamera zurück void Kamera::applyMask() { for( auto f = frames.begin(); f != frames.end(); f++ ) { (*f)->applyMask( m ); } } // Gibt die Maske der Kamera zurück Mask *Kamera::getMask() const { return (Mask*)&m; } // Speichert die Maske der Kamera und erzeugt die Bilder in JPEG Images void Kamera::saveMask() { m.save(); QProgressDialog progress( "Maske wird gespeichert...", "", 0, frames.size() ); progress.setWindowModality(Qt::WindowModal); progress.setCancelButton( 0 ); for( auto f = frames.begin(); f != frames.end(); f++ ) { m.saveToFrameMask( (*f)->getImageMatrix(), (*f)->getName() ); progress.setValue( progress.value() + 1 ); progress.repaint(); } applyMask(); progress.close(); } // Erhöht den Reference Counter um 1 void Kamera::refNew() { ref++; } // Verringert den Reference Counter um 1 (bei 0 löscht sich das Objekt selbst) void Kamera::refRelease() { if( !--ref ) delete this; }