11 #include <QApplication>
13 #include <QElapsedTimer>
14 #include <QMainWindow>
15 #include <QMessageBox>
16 #include <QProgressDialog>
39 qTreeIso::qTreeIso(QObject* parent)
46 bool hasCloud =
false;
47 for (
ccHObject* entity : selectedEntities) {
57 QList<QAction*> qTreeIso::getActions() {
71 Parameters parameters;
74 connect(treeisoDlg.pushButtonInitSeg, &QPushButton::clicked, [&] {
75 parameters.min_nn1 = treeisoDlg.spinBoxK1->value();
76 parameters.reg_strength1 = treeisoDlg.doubleSpinBoxLambda1->value();
78 parameters.decimate_res1 = treeisoDlg.doubleSpinBoxDecRes1->value();
80 init_segs(parameters, &treeisoDlg);
83 connect(treeisoDlg.pushButtonInterSeg, &QPushButton::clicked, [&] {
84 parameters.min_nn2 = treeisoDlg.spinBoxK2->value();
85 parameters.reg_strength2 = treeisoDlg.doubleSpinBoxLambda2->value();
86 parameters.decimate_res2 = treeisoDlg.doubleSpinBoxDecRes2->value();
87 parameters.max_gap = treeisoDlg.doubleSpinBoxMaxGap->value();
89 intermediate_segs(parameters, &treeisoDlg);
92 connect(treeisoDlg.pushButtonReseg, &QPushButton::clicked, [&] {
93 parameters.rel_height_length_ratio =
94 treeisoDlg.doubleSpinBoxRelHLRatio->value();
95 parameters.vertical_weight = treeisoDlg.doubleSpinBoxVWeight->value();
97 final_segs(parameters, &treeisoDlg);
99 treeisoDlg.pushButtonInitSeg->setEnabled(
true);
101 if (treeisoDlg.exec()) {
115 QProgressDialog* progressDlg =
new QProgressDialog(parent);
116 progressDlg->setWindowTitle(
"TreeIso Step 1. Initial segmention");
117 progressDlg->setLabelText(tr(
"Computing...."));
118 progressDlg->setCancelButton(
nullptr);
119 progressDlg->setRange(0, 0);
123 parameters.decimate_res1,
m_app, progressDlg)) {
129 progressDlg->close();
130 QApplication::processEvents();
139 QProgressDialog* progressDlg =
new QProgressDialog(parent);
140 progressDlg->setWindowTitle(
"TreeIso Step 2. Interim segmention");
141 progressDlg->setLabelText(tr(
"Computing...."));
142 progressDlg->setCancelButton(
nullptr);
143 progressDlg->setRange(0, 0);
147 parameters.decimate_res2, parameters.max_gap,
148 m_app, progressDlg)) {
150 QApplication::processEvents();
157 QApplication::processEvents();
166 QProgressDialog* progressDlg =
new QProgressDialog(parent);
167 progressDlg->setWindowTitle(
"TreeIso Step 3. Final segmention");
168 progressDlg->setLabelText(tr(
"Computing...."));
169 progressDlg->setCancelButton(
nullptr);
170 progressDlg->setRange(0, 0);
174 parameters.rel_height_length_ratio,
175 parameters.vertical_weight,
m_app, progressDlg)) {
177 QApplication::processEvents();
183 progressDlg->close();
184 QApplication::processEvents();
static bool Init_seg(const unsigned min_nn1, const float regStrength1, const float PR_DECIMATE_RES1, ecvMainAppInterface *app, QProgressDialog *progressDlg)
static bool Final_seg(const unsigned PR_MIN_NN3, const float PR_REL_HEIGHT_LENGTH_RATIO, const float PR_VERTICAL_WEIGHT, ecvMainAppInterface *app, QProgressDialog *progressDlg)
static bool Intermediate_seg(const unsigned PR_MIN_NN2, const float PR_REG_STRENGTH2, const float PR_DECIMATE_RES2, const float PR_MAX_GAP, ecvMainAppInterface *app, QProgressDialog *progressDlg)
virtual bool registerCommand(Command::Shared command)=0
Registers a new command.
virtual QString getName() const override
Returns (short) name (for menu entry, etc.)
virtual QString getDescription() const override
Returns long name/description (for tooltip, etc.)
virtual QIcon getIcon() const override
Returns icon.
Hierarchical CLOUDVIEWER Object.
std::vector< ccHObject * > Container
Standard instances container (for children, etc.)
Standard ECV plugin interface.
ecvMainAppInterface * m_app
Main application interface.
Dialog for qTreeIso plugin.
virtual void updateUI()=0
virtual QMainWindow * getMainWindow()=0
Returns main window.
virtual void refreshAll(bool only2D=false, bool forceRedraw=true)=0
Redraws all GL windows that have the 'refresh' flag on.
virtual void dispToConsole(QString message, ConsoleMessageLevel level=STD_CONSOLE_MESSAGE)=0
void final_segs(const Parameters ¶meters, QWidget *parent=nullptr)
QAction * m_action
Associated action.
void init_segs(const Parameters ¶meters, QWidget *parent=nullptr)
void intermediate_segs(const Parameters ¶meters, QWidget *parent=nullptr)
void doAction()
Slot called when associated ation is triggered.
qTreeIso command line processor
QSharedPointer< Command > Shared
Shared type.