diff --git a/CMakeLists.txt b/CMakeLists.txt index 958c8a45..36515a47 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -55,6 +55,16 @@ ADD_DEFINITIONS(-DPROJECT_NAME="${PROJECT_NAME}") ####### DEPENDENCIES ####### FIND_PACKAGE(OpenCV REQUIRED) # tested on 2.3.1 +# check if version status is "-dev" (SIFT compatibility issue between 4.3.0 vs 4.3.0-dev) +FIND_FILE(OpenCV_VERSION_HPP opencv2/core/version.hpp + PATHS ${OpenCV_INCLUDE_DIRS} + NO_DEFAULT_PATH) +FILE(READ ${OpenCV_VERSION_HPP} TMPTXT) +STRING(FIND "${TMPTXT}" "-dev" matchres) +IF(NOT ${matchres} EQUAL -1) + add_definitions(-DOPENCV_DEV) +ENDIF(NOT ${matchres} EQUAL -1) + # For SuperPoint SET(TORCH 0) FIND_PACKAGE(Torch QUIET) @@ -289,21 +299,21 @@ IF(NOT CATKIN_BUILD) ENDIF() ELSE() IF(OPENCV_XFEATURES2D_FOUND) - MESSAGE(STATUS " With OpenCV ${OpenCV_VERSION_MAJOR} xfeatures2d module (BRIEF/FREAK/KAZE) = YES") + MESSAGE(STATUS " With OpenCV ${OpenCV_VERSION} xfeatures2d module (BRIEF/FREAK/KAZE) = YES") ELSE() - MESSAGE(STATUS " With OpenCV ${OpenCV_VERSION_MAJOR} xfeatures2d module (BRIEF/FREAK/KAZE) = NO (not found)") + MESSAGE(STATUS " With OpenCV ${OpenCV_VERSION} xfeatures2d module (BRIEF/FREAK/KAZE) = NO (not found)") ENDIF() IF(OpenCV_VERSION VERSION_GREATER "4.2.0") IF(NONFREE) - MESSAGE(STATUS " With OpenCV ${OpenCV_VERSION_MAJOR} nonfree module (SURF) = YES") + MESSAGE(STATUS " With OpenCV ${OpenCV_VERSION} nonfree module (SURF) = YES") ELSE() - MESSAGE(STATUS " With OpenCV ${OpenCV_VERSION_MAJOR} nonfree module (SURF) = NO") + MESSAGE(STATUS " With OpenCV ${OpenCV_VERSION} nonfree module (SURF) = NO") ENDIF() ELSEIF() IF(NONFREE) - MESSAGE(STATUS " With OpenCV ${OpenCV_VERSION_MAJOR} nonfree module (SIFT/SURF) = YES") + MESSAGE(STATUS " With OpenCV ${OpenCV_VERSION} nonfree module (SIFT/SURF) = YES") ELSE() - MESSAGE(STATUS " With OpenCV ${OpenCV_VERSION_MAJOR} nonfree module (SIFT/SURF) = NO") + MESSAGE(STATUS " With OpenCV ${OpenCV_VERSION} nonfree module (SIFT/SURF) = NO") ENDIF() ENDIF() ENDIF() diff --git a/src/ParametersToolBox.cpp b/src/ParametersToolBox.cpp index 248620ce..e3949210 100644 --- a/src/ParametersToolBox.cpp +++ b/src/ParametersToolBox.cpp @@ -346,7 +346,7 @@ void ParametersToolBox::addParameter(QVBoxLayout * layout, if(key.compare(Settings::kFeature2D_1Detector()) == 0) { #if FINDOBJECT_NONFREE == 0 -#if CV_MAJOR_VERSION < 4 || (CV_MAJOR_VERSION == 4 && CV_MINOR_VERSION < 3) // <4.3.0 +#if CV_MAJOR_VERSION < 4 || (CV_MAJOR_VERSION == 4 && (CV_MINOR_VERSION < 3 || (CV_MINOR_VERSION==3 && !defined(OPENCV_DEV)))) widget->setItemData(5, 0, Qt::UserRole - 1); // disable SIFT #endif widget->setItemData(7, 0, Qt::UserRole - 1); // disable SURF @@ -368,7 +368,7 @@ void ParametersToolBox::addParameter(QVBoxLayout * layout, if(key.compare(Settings::kFeature2D_2Descriptor()) == 0) { #if FINDOBJECT_NONFREE == 0 -#if CV_MAJOR_VERSION < 4 || (CV_MAJOR_VERSION == 4 && CV_MINOR_VERSION < 3) // <4.3.0 +#if CV_MAJOR_VERSION < 4 || (CV_MAJOR_VERSION == 4 && (CV_MINOR_VERSION < 3 || (CV_MINOR_VERSION==3 && !defined(OPENCV_DEV)))) widget->setItemData(2, 0, Qt::UserRole - 1); // disable SIFT #endif widget->setItemData(3, 0, Qt::UserRole - 1); // disable SURF diff --git a/src/Settings.cpp b/src/Settings.cpp index 8af30c0c..e0d4568b 100644 --- a/src/Settings.cpp +++ b/src/Settings.cpp @@ -137,7 +137,7 @@ ParametersMap Settings::loadSettings(const QString & fileName) int index = str.split(':').first().toInt(); if(key.compare(Settings::kFeature2D_1Detector()) == 0) { -#if CV_MAJOR_VERSION < 4 || (CV_MAJOR_VERSION == 4 && CV_MINOR_VERSION < 3) +#if CV_MAJOR_VERSION < 4 || (CV_MAJOR_VERSION == 4 && (CV_MINOR_VERSION < 3 || (CV_MINOR_VERSION==3 && !defined(OPENCV_DEV)))) #if FINDOBJECT_NONFREE == 0 if(index == 5 || index == 7) { @@ -171,7 +171,7 @@ ParametersMap Settings::loadSettings(const QString & fileName) } else if(key.compare(Settings::kFeature2D_2Descriptor()) == 0) { -#if CV_MAJOR_VERSION < 4 || (CV_MAJOR_VERSION == 4 && CV_MINOR_VERSION < 3) +#if CV_MAJOR_VERSION < 4 || (CV_MAJOR_VERSION == 4 && (CV_MINOR_VERSION < 3 || (CV_MINOR_VERSION==3 && !defined(OPENCV_DEV)))) #if FINDOBJECT_NONFREE == 0 if(index == 2 || index == 3) { @@ -711,7 +711,7 @@ Feature2D * Settings::createKeypointDetector() { //check for nonfree stuff -#if CV_MAJOR_VERSION < 4 || (CV_MAJOR_VERSION == 4 && CV_MINOR_VERSION < 3) +#if CV_MAJOR_VERSION < 4 || (CV_MAJOR_VERSION == 4 && (CV_MINOR_VERSION < 3 || (CV_MINOR_VERSION==3 && !defined(OPENCV_DEV)))) #if FINDOBJECT_NONFREE == 0 if(strategies.at(index).compare("SIFT") == 0 || strategies.at(index).compare("SURF") == 0) @@ -997,7 +997,7 @@ Feature2D * Settings::createKeypointDetector() #endif UDEBUG("type=%s", strategies.at(index).toStdString().c_str()); } -#if CV_MAJOR_VERSION < 4 || (CV_MAJOR_VERSION == 4 && CV_MINOR_VERSION < 3) // <4.3.0 +#if CV_MAJOR_VERSION < 4 || (CV_MAJOR_VERSION == 4 && (CV_MINOR_VERSION < 3 || (CV_MINOR_VERSION==3 && !defined(OPENCV_DEV)))) #if FINDOBJECT_NONFREE == 1 else if(strategies.at(index).compare("SIFT") == 0) { @@ -1052,7 +1052,7 @@ Feature2D * Settings::createKeypointDetector() } } #endif -#else // >= 4.3.0 +#else // >= 4.3.0-dev else if(strategies.at(index).compare("SIFT") == 0) { feature2D = new Feature2D(cv::SIFT::create( @@ -1126,7 +1126,7 @@ Feature2D * Settings::createDescriptorExtractor() { //check for nonfree stuff -#if CV_MAJOR_VERSION < 4 || (CV_MAJOR_VERSION == 4 && CV_MINOR_VERSION < 3) +#if CV_MAJOR_VERSION < 4 || (CV_MAJOR_VERSION == 4 && (CV_MINOR_VERSION < 3 || (CV_MINOR_VERSION==3 && !defined(OPENCV_DEV)))) #if FINDOBJECT_NONFREE == 0 if(strategies.at(index).compare("SIFT") == 0 || strategies.at(index).compare("SURF") == 0) @@ -1352,7 +1352,7 @@ Feature2D * Settings::createDescriptorExtractor() UDEBUG("type=%s", strategies.at(index).toStdString().c_str()); } #endif -#if CV_MAJOR_VERSION < 4 || (CV_MAJOR_VERSION == 4 && CV_MINOR_VERSION < 3) // <4.3.0 +#if CV_MAJOR_VERSION < 4 || (CV_MAJOR_VERSION == 4 && (CV_MINOR_VERSION < 3 || (CV_MINOR_VERSION==3 && !defined(OPENCV_DEV)))) #if FINDOBJECT_NONFREE == 1 else if(strategies.at(index).compare("SIFT") == 0) { @@ -1407,7 +1407,7 @@ Feature2D * Settings::createDescriptorExtractor() } } #endif -#else // >= 4.3.0 +#else // >= 4.3.0-dev else if(strategies.at(index).compare("SIFT") == 0) { feature2D = new Feature2D(cv::SIFT::create(