diff --git a/src/MainWindow.cpp b/src/MainWindow.cpp index 2d8b0dde..0f516ef0 100644 --- a/src/MainWindow.cpp +++ b/src/MainWindow.cpp @@ -353,31 +353,38 @@ void MainWindow::update(const cv::Mat & image) delete detector; ui_->label_timeDetection->setText(QString::number(time.restart())); - // EXTRACT DESCRIPTORS cv::Mat descriptors; - cv::DescriptorExtractor * extractor = Settings::createDescriptorsExtractor(); - extractor->compute(img, keypoints, descriptors); - delete extractor; - if((int)keypoints.size() != descriptors.rows) + if(keypoints.size()) { - printf("ERROR : kpt=%d != descriptors=%d\n", (int)keypoints.size(), descriptors.rows); + // EXTRACT DESCRIPTORS + cv::DescriptorExtractor * extractor = Settings::createDescriptorsExtractor(); + extractor->compute(img, keypoints, descriptors); + delete extractor; + if((int)keypoints.size() != descriptors.rows) + { + printf("ERROR : kpt=%d != descriptors=%d\n", (int)keypoints.size(), descriptors.rows); + } + if(imageGrayScale) + { + cvReleaseImage(&imageGrayScale); + } + ui_->label_timeExtraction->setText(QString::number(time.restart())); } - if(imageGrayScale) + else { - cvReleaseImage(&imageGrayScale); + printf("WARNING: no features detected !?!\n"); + ui_->label_timeExtraction->setText(QString::number(0)); } - ui_->label_timeExtraction->setText(QString::number(time.restart())); // COMPARE - int alpha = 20*255/100; - if(!dataTree_.empty() && (Settings::getNearestNeighbor_nndrRatioUsed() || Settings::getNearestNeighbor_minDistanceUsed())) + if(!dataTree_.empty() && keypoints.size() && (Settings::getNearestNeighbor_nndrRatioUsed() || Settings::getNearestNeighbor_minDistanceUsed())) { // CREATE INDEX cv::Mat environment(descriptors.rows, descriptors.cols, CV_32F); descriptors.convertTo(environment, CV_32F); cv::flann::Index treeFlannIndex(environment, cv::flann::KDTreeIndexParams()); ui_->label_timeIndexing->setText(QString::number(time.restart())); - + // DO NEAREST NEIGHBOR int k = 1; if(Settings::getNearestNeighbor_nndrRatioUsed()) @@ -390,7 +397,6 @@ void MainWindow::update(const cv::Mat & image) treeFlannIndex.knnSearch(dataTree_, results, dists, k, cv::flann::SearchParams(emax) ); // maximum number of leafs checked ui_->label_timeMatching->setText(QString::number(time.restart())); - // PROCESS RESULTS if(this->isVisible()) { @@ -406,7 +412,6 @@ void MainWindow::update(const cv::Mat & image) for(int i=0; isetKptColor(indexes_1.at(k), QColor(0,0,0,alpha)); + objects_.at(j)->setKptColor(indexes_1.at(k), QColor(0,0,0)); } } } diff --git a/src/ObjWidget.cpp b/src/ObjWidget.cpp index df737740..6404af97 100644 --- a/src/ObjWidget.cpp +++ b/src/ObjWidget.cpp @@ -20,6 +20,7 @@ #include #include #include +#include #include @@ -201,6 +202,14 @@ void ObjWidget::setAlpha(int alpha) color.setAlpha(alpha_); keypointItems_.at(i)->setColor(color); } + for(int i=0; ipen(); + QColor color = pen.color(); + color.setAlpha(alpha_); + pen.setColor(color); + rectItems_.at(i)->setPen(pen); + } } if(!_graphicsViewMode->isChecked()) { @@ -282,6 +291,11 @@ void ObjWidget::addRect(QGraphicsRectItem * rect) graphicsView_->scene()->addItem(rect); } rect->setZValue(2); + QPen pen = rect->pen(); + QColor color = pen.color(); + color.setAlpha(alpha_); + pen.setColor(color); + rect->setPen(pen); rectItems_.append(rect); }