# 编译OpenCV Contrib SFM
模块时报错
# 报错
使用命令:
cmake -DOPENCV_EXTRA_MODULES_PATH=opencv_contrib/modules -DOPENCV_GENERATE_PKGCONFIG_INFO=YES -DCMAKE_INSTALL_PREFIX=XXX -DCMAKE_BUILD_TYPE=RELEASE -DOPENCV_ENABLE_NOFREE=ON ..
编译OpenCV Contrib
模块时,对应版本是OpenCV 4.2.0
到91%
时还报错如下:
Build error ‘integer_sequence’ is not a member of ‘std’
# 原因分析
这是因为OpenCV contrib
中的SFM
使用CERES
库,而CERES
库中使用了C++14
的标准,因此在编译的时候会报错,了解C++
新标准的话很容易发现类integer_sequence
是C++14
标准中引入的。
# 解决办法
一个办法是改变SFM
模块编译使用的c++
标准,找到
opencv_contrib/modules/sfm/src/libmv_light/libmv/multiview/CMakeLists.txt
文件,在其中加入:
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
然后重新执行上面的cmake
命令后,重新编译即可。