当我试图在SFM模块中执行示例代码时,收到一个错误。最初,SFM不在我的contrib目录中。所以我下载了最新的contrib并将sfm文件夹粘贴到我的contrib目录中。我使用了sfm模块中的CMakeLists.txt。
然后我尝试用scene_reconstruction.cpp和从sfm模块中获取的CMakeLists.txt在自己的目录中构建它。下面是我得到的错误
--C编译器标识是GNU5.4.0
--CXX编译器标识是GNU 5.4.0
--检查工作的C编译器/usr/bin/C C
--检查工作的C编译器:/usr/bin/C C--works
--检测C编译器ABI信息
--检测C编译器ABI info-done
--检测C编译特性
--检测C编译特性-完成
--检查CXX编译器是否正常工作/usr/bin/c++
--检查CXX编译器是否正常工作/usr/bin/c++--works
--正在检测CXX编译器ABI信息
--检测CXX编译器ABI信息-完成
--检测CXX编译特性
--检测CXX编译特性-完成
--找到已安装版本的eign:/usr/lib/cmake/eign3
--找到所需的Ceres依赖项:Eigen版本3.2.92 in/usr/include/eigen3
--找到所需的Ceres依赖项:glog
--在GOOGLE命名空间中执行测试GFLAGS
--在GOOGLE命名空间中执行GFLAGS-u测试-成功
--找到所需的Ceres依赖项:gflags
--找到Ceres版本:1.13.0,安装在/usr/local中,组件为:[LAPACK,SuiteSparse,sparselinearglibrary,cxsarse,SchurSpecializations,OpenMP]
--正在检查SFM deps。。。真的
--模块opencv_sfm已禁用,因为找不到以下依赖项:eign
CMake Error at CMakeLists.txt:35(ocv_module_disable):
未知的CMake命令“ocv_module_disable”。
CMakeLists.txt中的CMake警告(dev):
不存在cmake_minimum_required命令。一行代码,如
cmake U最低要求(3.5版)
应该添加到文件的顶部。指定的版本可能更低
如果您希望支持此项目的旧版CMake。更多
信息运行“cmake--help policy cmp000”。
此警告适用于项目开发人员。使用-Wno dev来抑制它。
--配置不完整,出现错误!
注:在开始之前,我已经完成了SFM文档页面中提到的所有库的下载。

最佳答案

我建议您安装所需的依赖项,如Eigen、Google log、Google Flags和Ceres,并下载相应的opencv_contrib版本,然后使用

-DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules

并使用以下CMakeLists.txt文件:
cmake_minimum_required(VERSION 2.8)
project( main )
find_package( OpenCV REQUIRED)
include_directories( ${OpenCV_INCLUDE_DIRS} )
add_executable( main main.cpp )
target_link_libraries( main ${OpenCV_LIBS} )

假设您有main.cpp文件,如果您有正确的安装,它应该可以工作。
有关更多信息,请访问:
https://github.com/opencv/opencv_contrib/tree/master/modules/sfm

https://github.com/opencv/opencv_contrib/issues/476

关于c++ - 无法在OpenCV中运行SFM模块的程序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44492929/

10-13 02:57