123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- #include "mask.h"
- #include <QDebug>
- #include <QPixmap>
- #include <QBitmap>
- Mask::Mask( QString p )
- : path( p ),
- mask( 0 )
- {}
- Mask::~Mask()
- {
- unloadMask();
- }
- // Lädt das Masken Bild
- void Mask::loadMask()
- {
- if( !mask )
- {
- mask = new QImage( path );
- }
- }
- // Gibt das Maskenbild zurück
- QImage *Mask::getMask()
- {
- return mask;
- }
- // Gibt ein Bild zurück, indem der Weiße Teil transparent ist
- QPixmap Mask::getDrawableImage()
- {
- QPixmap mp( path );
- mp.setMask( mp.createMaskFromColor( QColor( 0, 0, 0 ), Qt::MaskOutColor ) );
- return mp;
- }
- // Prüft, ob ein Polygon im verbotenen Bereich liegt
- bool Mask::isPolygonInside( QPolygon p )
- {
- loadMask();
- int pCount = p.count();
- for( int i = 0; i< pCount; i++ )
- {
- if( mask->pixel( p.at( i ).x(), p.at( i ).y() ) != 0xFF000000 )
- return true;
- }
- return false;
- }
- // Erstellt eine neue Maske
- void Mask::createMask( QSize s )
- {
- if( mask )
- delete mask;
- mask = new QImage( s, QImage::Format_RGB32 );
- mask->fill( Qt::white );
- }
- // Speichert die Maske
- void Mask::save() const
- {
- mask->save( path );
- }
- // Erzeugt für ein Bild das JPEGImage bild
- // img: Das Bild zu dem das JPEGImage generiert werden soll
- // frameName: Der Name des Bildes
- void Mask::saveToFrameMask( cv::Mat img, QString frameName ) const
- {
- cv::Mat result;
- cv::Mat mask = cv::imread( path.toStdString() );
- cv::bitwise_and( img, mask, result );
- qDebug() << path.mid( 0, path.lastIndexOf( "/", path.lastIndexOf( "/" ) - 1 ) + 1 ) + "JPEGImages/" + frameName;
- cv::imwrite( (path.mid( 0, path.lastIndexOf( "/", path.lastIndexOf( "/" ) - 1 ) + 1 ) + "JPEGImages/" + frameName).toStdString(), result );
- }
- // Löscht die Maske aus dem Speicher
- void Mask::unloadMask()
- {
- delete mask;
- mask = 0;
- }
|