ObjectDetectionView.h 3.32 KB
Newer Older
pixhawk's avatar
pixhawk committed
1 2
/*=====================================================================

3
QGroundControl Open Source Ground Control Station
pixhawk's avatar
pixhawk committed
4

5
(c) 2009, 2010 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
pixhawk's avatar
pixhawk committed
6

7
This file is part of the QGROUNDCONTROL project
pixhawk's avatar
pixhawk committed
8

9
    QGROUNDCONTROL is free software: you can redistribute it and/or modify
pixhawk's avatar
pixhawk committed
10 11 12 13
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

14
    QGROUNDCONTROL is distributed in the hope that it will be useful,
pixhawk's avatar
pixhawk committed
15 16 17 18 19
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
20
    along with QGROUNDCONTROL. If not, see <http://www.gnu.org/licenses/>.
pixhawk's avatar
pixhawk committed
21 22 23 24 25 26 27 28

======================================================================*/

/**
 * @file
 *   @brief List of detected objects
 *   @author Benjamin Knecht <mavteam@student.ethz.ch>
 *   @author Lorenz Meier <mavteam@student.ethz.ch>
29
 *   @author Fabian Landau <mavteam@student.ethz.ch>
pixhawk's avatar
pixhawk committed
30 31 32 33 34 35 36 37 38 39 40
 *
 */

#ifndef _OBJECTDETECTIONVIEW_H_
#define _OBJECTDETECTIONVIEW_H_

#include <QtGui/QWidget>
#include <QResizeEvent>
#include <QMap>
#include "UASInterface.h"

41 42 43
namespace Ui
{
class ObjectDetectionView;
pixhawk's avatar
pixhawk committed
44 45 46 47 48
}

/**
 * @brief Lists the detected objects and their confidence
 */
49 50
class ObjectDetectionView : public QWidget
{
pixhawk's avatar
pixhawk committed
51 52
    Q_OBJECT
    Q_DISABLE_COPY(ObjectDetectionView)
53

54
    struct Pattern {
55 56 57
        Pattern() : name(QString()), confidence(0.0f), count(0) {}
        Pattern(QString name, float confidence) : name(name), confidence(confidence), count(1) {}

58 59 60
        bool operator<(const Pattern& other) const {
            return this->confidence > other.confidence;    // this comparison is intentionally wrong to sort the QList from highest confidence to lowest
        }
61 62 63 64 65 66 67

        QString name;
        float confidence;
        unsigned int count;
    };

public:
68
    explicit ObjectDetectionView(QString folder="images/patterns", QWidget *parent = 0);
pixhawk's avatar
pixhawk committed
69 70 71 72 73 74 75 76 77
    virtual ~ObjectDetectionView();

    /** @brief Resize widget contents */
    void resizeEvent(QResizeEvent * event );

public slots:
    /** @brief Set the UAS this view is currently associated to */
    void setUAS(UASInterface* uas);
    /** @brief Report new detection */
78
    void newPattern(int uasId, QString patternPath, float confidence, bool detected);
pixhawk's avatar
pixhawk committed
79
    void newLetter(int uasId, QString letter, float confidence, bool detected);
80 81
    void decreaseLetterTime();
    void updateLetterList();
82
    void clearLists();
pixhawk's avatar
pixhawk committed
83 84 85 86 87
    /** @brief Accept an internal action, update name and preview image label */
    void takeAction();

protected:
    virtual void changeEvent(QEvent *e);
88 89 90 91
    QMap<QString, Pattern> patternList;  ///< The detected patterns with their confidence and detection count
    QMap<QString, Pattern> letterList;   ///< The detected letters with their confidence and detection count
    QTimer letterTimer;                  ///< A timer to "forget" old letters
    UASInterface* uas;                   ///< The monitored UAS
pixhawk's avatar
pixhawk committed
92 93 94 95 96 97 98 99
    QString patternFolder;               ///< The base folder where pattern images are stored in
    const QString separator;

private:
    Ui::ObjectDetectionView *m_ui;
};

#endif // _OBJECTDETECTIONVIEW_H_