Don't update objects when a "changed" Feature2D or NearestNeighbor parameter is still the same (it happens when a parameter widget loses focus) to avoid unnecessary objects update
git-svn-id: http://find-object.googlecode.com/svn/trunk/find_object@277 620bd6b2-0a58-f614-fd9a-1bd335dccda9
This commit is contained in:
parent
e4ca56879c
commit
17873bacfa
@ -88,6 +88,7 @@ MainWindow::MainWindow(Camera * camera, const QString & settings, QWidget * pare
|
||||
Settings::loadSettings(settings_, &geometry, &state);
|
||||
this->restoreGeometry(geometry);
|
||||
this->restoreState(state);
|
||||
lastObjectsUpdateParameters_ = Settings::getParameters();
|
||||
|
||||
ui_->toolBox->setupUi();
|
||||
connect((QDoubleSpinBox*)ui_->toolBox->getParameterWidget(Settings::kCamera_4imageRate()),
|
||||
@ -915,6 +916,7 @@ void MainWindow::updateData()
|
||||
}
|
||||
this->statusBar()->clearMessage();
|
||||
}
|
||||
lastObjectsUpdateParameters_ = Settings::getParameters();
|
||||
}
|
||||
|
||||
void MainWindow::startProcessing()
|
||||
@ -1720,24 +1722,26 @@ void MainWindow::update(const cv::Mat & image)
|
||||
|
||||
void MainWindow::notifyParametersChanged(const QStringList & paramChanged)
|
||||
{
|
||||
|
||||
//Selective update (to not update all objects for a simple camera's parameter modification)
|
||||
bool detectorDescriptorParamsChanged = false;
|
||||
bool nearestNeighborParamsChanged = false;
|
||||
for(QStringList::const_iterator iter = paramChanged.begin(); iter!=paramChanged.end(); ++iter)
|
||||
{
|
||||
printf("Parameter changed: %s\n", iter->toStdString().c_str());
|
||||
if(!detectorDescriptorParamsChanged && iter->contains("Feature2D"))
|
||||
if(lastObjectsUpdateParameters_.value(*iter) != Settings::getParameter(*iter))
|
||||
{
|
||||
detectorDescriptorParamsChanged = true;
|
||||
}
|
||||
else if(!nearestNeighborParamsChanged &&
|
||||
( (iter->contains("NearestNeighbor") && Settings::getGeneral_invertedSearch()) ||
|
||||
iter->compare(Settings::kGeneral_invertedSearch()) == 0 ||
|
||||
(iter->compare(Settings::kGeneral_vocabularyIncremental()) == 0 && Settings::getGeneral_invertedSearch()) ||
|
||||
(iter->compare(Settings::kGeneral_threads()) == 0 && !Settings::getGeneral_invertedSearch()) ))
|
||||
{
|
||||
nearestNeighborParamsChanged = true;
|
||||
if(!detectorDescriptorParamsChanged && iter->contains("Feature2D"))
|
||||
{
|
||||
detectorDescriptorParamsChanged = true;
|
||||
}
|
||||
else if(!nearestNeighborParamsChanged &&
|
||||
( (iter->contains("NearestNeighbor") && Settings::getGeneral_invertedSearch()) ||
|
||||
iter->compare(Settings::kGeneral_invertedSearch()) == 0 ||
|
||||
(iter->compare(Settings::kGeneral_vocabularyIncremental()) == 0 && Settings::getGeneral_invertedSearch()) ||
|
||||
(iter->compare(Settings::kGeneral_threads()) == 0 && !Settings::getGeneral_invertedSearch()) ))
|
||||
{
|
||||
nearestNeighborParamsChanged = true;
|
||||
}
|
||||
}
|
||||
|
||||
if(iter->compare(Settings::kGeneral_port()) == 0 &&
|
||||
|
||||
@ -104,6 +104,7 @@ private:
|
||||
bool objectsModified_;
|
||||
QMap<int, QByteArray> imagesMap_;
|
||||
TcpServer * tcpServer_;
|
||||
QMap<QString, QVariant> lastObjectsUpdateParameters_; // ParametersMap
|
||||
};
|
||||
|
||||
#endif /* MainWindow_H_ */
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user