From 2c0e121d82de2c2885df2354affd1d9a2e6444f5 Mon Sep 17 00:00:00 2001 From: matlabbe Date: Sun, 17 Jan 2016 15:21:03 -0500 Subject: [PATCH] Fixed crash (OpenCV Error: Unsupported format or combination of formats) when both detector and descriptors are changed AND new type is not compatible with nearest-beighbor approach used (float vs binary) --- src/ParametersToolBox.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/ParametersToolBox.cpp b/src/ParametersToolBox.cpp index e5cba7db..3550e6d4 100644 --- a/src/ParametersToolBox.cpp +++ b/src/ParametersToolBox.cpp @@ -558,6 +558,7 @@ void ParametersToolBox::changeParameter(const int & value) QCheckBox * checkBox = qobject_cast(sender()); if(comboBox) { + bool descriptorChanged = false; if(comboBox->objectName().compare(Settings::kFeature2D_1Detector()) == 0) { QComboBox * descriptorBox = (QComboBox*)this->getParameterWidget(Settings::kFeature2D_2Descriptor()); @@ -584,6 +585,7 @@ void ParametersToolBox::changeParameter(const int & value) this->updateParameter(Settings::kFeature2D_2Descriptor()); descriptorBox->blockSignals(false); paramChanged.append(Settings::kFeature2D_2Descriptor()); + descriptorChanged = true; } else { @@ -596,7 +598,8 @@ void ParametersToolBox::changeParameter(const int & value) bool nnStrategyChanged = false; //verify binary issue with nearest neighbor strategy if(comboBox->objectName().compare(Settings::kFeature2D_2Descriptor()) == 0 || - comboBox->objectName().compare(Settings::kNearestNeighbor_1Strategy()) == 0) + comboBox->objectName().compare(Settings::kNearestNeighbor_1Strategy()) == 0 || + descriptorChanged) { QComboBox * descriptorBox = (QComboBox*)this->getParameterWidget(Settings::kFeature2D_2Descriptor()); QComboBox * nnBox = (QComboBox*)this->getParameterWidget(Settings::kNearestNeighbor_1Strategy());