123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- #include "kamera.h"
- #include <QProgressDialog>
- 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;
- }
|