diff --git a/Classify3DMASCDialog.ui b/Classify3DMASCDialog.ui index 418e01f..941c11c 100644 --- a/Classify3DMASCDialog.ui +++ b/Classify3DMASCDialog.ui @@ -82,20 +82,13 @@ color:red; - Assign each role to the right cloud, and select the role of the cloud to be classified + Assign each label to the right cloud Qt::AlignCenter - - - - CLASSIFY - - - @@ -170,6 +163,18 @@ + + + + + true + + + + CLASSIFY + + + diff --git a/Train3DMASCDialog.ui b/Train3DMASCDialog.ui index 19d5193..d32d265 100644 --- a/Train3DMASCDialog.ui +++ b/Train3DMASCDialog.ui @@ -157,7 +157,7 @@ false - Save + Save classifier @@ -231,7 +231,7 @@ - export + Export feature list diff --git a/confusionmatrix.cpp b/confusionmatrix.cpp index bc8c138..cbbfcf3 100644 --- a/confusionmatrix.cpp +++ b/confusionmatrix.cpp @@ -9,11 +9,12 @@ #include -ConfusionMatrix::ConfusionMatrix(QWidget *parent) : +ConfusionMatrix::ConfusionMatrix(std::vector &actual, std::vector &predicted, QWidget *parent) : QWidget(parent), ui(new Ui::ConfusionMatrix) { ui->setupUi(this); + compute(actual, predicted); } ConfusionMatrix::~ConfusionMatrix() @@ -215,9 +216,6 @@ void ConfusionMatrix::compute(std::vector& actual, std::vectorui->tableWidget->setItem(2 + realIdx, 2 + nbClasses + F1_SCORE, newItem); } -// this->ui->tableWidget->horizontalHeader()->sectionResizeMode(QHeaderView::ResizeToContents); -// this->ui->tableWidget->verticalHeader()->sectionResizeMode(QHeaderView::ResizeToContents); - this->show(); this->setMinimumSize(this->ui->tableWidget->sizeHint()); } diff --git a/confusionmatrix.h b/confusionmatrix.h index a668cb4..fb8e86c 100644 --- a/confusionmatrix.h +++ b/confusionmatrix.h @@ -23,7 +23,7 @@ public: F1_SCORE = 2 }; - explicit ConfusionMatrix(QWidget *parent = nullptr); + explicit ConfusionMatrix(std::vector& actual, std::vector& predicted, QWidget *parent = nullptr); ~ConfusionMatrix(); void computePrecisionRecallF1Score(cv::Mat& matrix, cv::Mat& precisionRecallF1Score); diff --git a/q3DMASC.cpp b/q3DMASC.cpp index 30333fb..c8c86bc 100644 --- a/q3DMASC.cpp +++ b/q3DMASC.cpp @@ -138,7 +138,7 @@ void q3DMASCPlugin::doClassifyAction() //now show a dialog where the user will be able to set the cloud roles Classify3DMASCDialog classifDlg(m_app); classifDlg.setCloudRoles(cloudLabels, corePointsLabel); - classifDlg.label_trainOrClassify->setText("CLASSIFY " + corePointsLabel); + classifDlg.label_trainOrClassify->setText(corePointsLabel + " will be classified"); classifDlg.classifierFileLineEdit->setText(inputFilename); static bool s_keepAttributes = false; classifDlg.keepAttributesCheckBox->setChecked(s_keepAttributes); @@ -274,7 +274,7 @@ void q3DMASCPlugin::doTrainAction() Classify3DMASCDialog classifDlg(m_app, true); classifDlg.setWindowTitle("3DMASC Train"); classifDlg.setCloudRoles(cloudLabels, corePointsLabel); - classifDlg.label_trainOrClassify->setText("TRAIN on " + corePointsLabel); + classifDlg.label_trainOrClassify->setText("The classifier will be trained on " + corePointsLabel); classifDlg.classifierFileLineEdit->setText(inputFilename); classifDlg.keepAttributesCheckBox->setChecked(s_keepAttributes); if (!classifDlg.exec()) @@ -672,7 +672,7 @@ void q3DMASCPlugin::doTrainAction() } //now wait for the user input - while (true) + while (true) // ew! { if (!trainDlg.exec()) { diff --git a/q3DMASCClassifier.cpp b/q3DMASCClassifier.cpp index 581edeb..fad380e 100644 --- a/q3DMASCClassifier.cpp +++ b/q3DMASCClassifier.cpp @@ -274,8 +274,7 @@ bool Classifier::classify( const Feature::Source::Set& featureSources, QCoreApplication::processEvents(); } - ConfusionMatrix *confusionMatrix = new ConfusionMatrix(); - confusionMatrix->compute(*classifSFBackup, *classificationSF); + ConfusionMatrix *confusionMatrix = new ConfusionMatrix(*classifSFBackup, *classificationSF); return success; } @@ -435,6 +434,8 @@ bool Classifier::evaluate(const Feature::Source::Set& featureSources, metrics.ratio = static_cast(metrics.goodGuess) / metrics.sampleCount; } + ConfusionMatrix *confusionMatrix = new ConfusionMatrix(*classifSF, *outputSF); + return true; }