Yolo_Label/label_img.h
2018-10-29 13:26:06 +09:00

84 lines
1.7 KiB
C++

#ifndef LABEL_IMG_H
#define LABEL_IMG_H
#include <QObject>
#include <QLabel>
#include <QImage>
#include <QMouseEvent>
#include <iostream>
#include <fstream>
struct ObjectLabelingBox
{
int label;
QRect box;
};
class label_img : public QLabel
{
Q_OBJECT
public:
label_img(QWidget *parent = nullptr);
void mouseMoveEvent(QMouseEvent *ev);
void mousePressEvent(QMouseEvent *ev);
void mouseReleaseEvent(QMouseEvent *ev);
QImage m_inputImg;
QImage m_inputImgCopy;//for drawing
QPoint m_mouse_pos_in_ui_coordinate;
QPoint m_mouse_pos_in_image_coordinate;
QVector<QColor> m_drawObjectBoxColor;
int m_uiX;
int m_uiY;
int m_imgX;
int m_imgY;
bool m_bMouseLeftButtonClicked;
static QColor BOX_COLORS[10];
QVector <ObjectLabelingBox> m_objBoundingBoxes;
void openImage(const QString &);
void showImage();
void loadLabelData(const QString & );
void setFocusObjectLabel(int);
void setFocusObjectName(QString);
signals:
void Mouse_Moved();
void Mouse_Pressed();
void Mouse_Release();
private:
int m_focusedObjectLabel;
QString m_foucsedObjectName;
double m_aspectRatioWidth;
double m_aspectRatioHeight;
QPoint m_objStartPoint;
QPoint m_objEndPoint;
void setMousePosition(int , int);
void drawCrossLine(QPainter& , QColor , int thickWidth = 3);
void drawFocusedObjectBox(QPainter& , Qt::GlobalColor , int thickWidth = 3);
void drawObjectBoxes(QPainter& , int thickWidth = 3);
void removeFocusedObjectBox(QPoint point);
QRect getRectFromTwoPoints(QPoint p1, QPoint p2);
};
#endif // LABEL_IMG_H