Repository for OpenCV's extra modules
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

132 lines
3.1 KiB

set(the_description "SFM algorithms")
### LIBMV LIGHT EXTERNAL DEPENDENCIES ###
find_package(Ceres QUIET)
if(NOT DEFINED GFLAGS_LIBRARIES)
set(GFLAGS_LIBRARIES "gflags")
endif()
if(NOT DEFINED GLOG_LIBRARIES)
set(GLOG_LIBRARIES "glog")
endif()
if(NOT DEFINED SFM_DEPS_OK)
set(_fname "${CMAKE_CURRENT_BINARY_DIR}/test_sfm_deps.cpp")
file(WRITE "${_fname}" "#include <glog/logging.h>\n#include <gflags/gflags.h>\nint main() { (void)(0); return 0; }\n")
try_compile(SFM_DEPS_OK "${CMAKE_CURRENT_BINARY_DIR}" "${_fname}"
CMAKE_FLAGS "-DINCLUDE_DIRECTORIES:STRING=${GLOG_INCLUDE_DIRS};${GFLAGS_INCLUDE_DIRS}"
LINK_LIBRARIES ${GLOG_LIBRARIES} ${GFLAGS_LIBRARIES}
OUTPUT_VARIABLE OUTPUT
)
file(REMOVE "${_fname}")
message(STATUS "Checking SFM deps... ${SFM_DEPS_OK}")
endif()
if(NOT HAVE_EIGEN OR NOT SFM_DEPS_OK)
set(DISABLE_MSG "Module opencv_sfm disabled because the following dependencies are not found:")
if(NOT HAVE_EIGEN)
set(DISABLE_MSG "${DISABLE_MSG} Eigen")
endif()
if(NOT SFM_DEPS_OK)
set(DISABLE_MSG "${DISABLE_MSG} Glog/Gflags")
endif()
message(STATUS ${DISABLE_MSG})
ocv_module_disable(sfm)
endif()
### LIBMV LIGHT DEFINITIONS ###
set(LIBMV_LIGHT_INCLUDES
src/libmv_light
"${OpenCV_SOURCE_DIR}/include/opencv"
"${GLOG_INCLUDE_DIRS}"
"${GFLAGS_INCLUDE_DIRS}"
)
set(LIBMV_LIGHT_LIBS
correspondence
multiview
numeric
${GLOG_LIBRARIES}
${GFLAGS_LIBRARIES}
)
if(Ceres_FOUND)
add_definitions("-DCERES_FOUND=1")
list(APPEND LIBMV_LIGHT_LIBS simple_pipeline)
else()
add_definitions("-DCERES_FOUND=0")
message(STATUS "CERES support is disabled. Ceres Solver for reconstruction API is required.")
endif()
### DEFINE OPENCV SFM MODULE DEPENDENCIES ###
### CREATE OPENCV SFM MODULE ###
ocv_add_module(sfm
opencv_core
opencv_calib3d
opencv_features2d
opencv_xfeatures2d
WRAP python
)
ocv_warnings_disable(CMAKE_CXX_FLAGS
-Wundef
-Wshadow
-Wsign-compare
-Wmissing-declarations
-Wunused-but-set-variable
-Wunused-parameter
-Wunused-function
)
if(UNIX)
if(CMAKE_COMPILER_IS_GNUCXX OR CV_ICC)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC")
endif()
endif()
ocv_include_directories( ${LIBMV_LIGHT_INCLUDES} )
ocv_module_include_directories()
# source files
FILE(GLOB OPENCV_SFM_SRC src/*.cpp)
# define the header files (make the headers appear in IDEs.)
FILE(GLOB OPENCV_SFM_HDRS include/opencv2/sfm.hpp include/opencv2/sfm/*.hpp)
ocv_set_module_sources(HEADERS ${OPENCV_SFM_HDRS}
SOURCES ${OPENCV_SFM_SRC})
ocv_create_module()
# build libmv_light
if(NOT CMAKE_VERSION VERSION_LESS 2.8.11) # See ocv_target_include_directories() implementation
if(TARGET ${the_module})
get_target_property(__include_dirs ${the_module} INCLUDE_DIRECTORIES)
include_directories(${__include_dirs})
endif()
endif()
include_directories(${OCV_TARGET_INCLUDE_DIRS_${the_module}})
add_subdirectory(src/libmv_light)
ocv_target_link_libraries(${the_module} ${LIBMV_LIGHT_LIBS})
### CREATE OPENCV SFM TESTS ###
ocv_add_accuracy_tests()
### CREATE OPENCV SFM SAMPLES ###
if(Ceres_FOUND)
ocv_add_samples(opencv_viz)
endif ()