无法在OpenCV中运行SFM模块的程序

时间:2017-06-12 06:45:34

标签: c++ linux opencv 3d-reconstruction structure-from-motion

当我尝试在SFM模块中执行示例代码时出现错误。最初,我的contrib目录中没有SFM。所以我下载了最新的contrib并在我的contrib目录中粘贴了sfm文件夹。我使用了sfm模块中的CMakeLists.txt。 然后我尝试使用scene_reconstruction.cpp和我从sfm模块获取的CMakeLists.txt在我自己的目录中构建它。以下是我得到的错误

  
    

- C编译器标识是GNU 5.4.0      - CXX编译器标识是GNU 5.4.0      - 检查工作的C编译器:/ usr / bin / cc      - 检查工作C编译器:/ usr / bin / cc - 工作      - 检测C编译器ABI信息      - 检测C编译器ABI信息 - 完成      - 检测C编译功能      - 检测C编译功能 - 完成      - 检查CXX编译器是否正常工作:/ usr / bin / c ++      - 检查工作CXX编译器:/ usr / bin / c ++ - 有效      - 检测CXX编译器ABI信息      - 检测CXX编译器ABI信息 - 完成      - 检测CXX编译功能      - 检测CXX编译功能 - 完成      - 找到安装版本的Eigen:/ usr / lib / cmake / eigen3      - 找到所需的Ceres依赖性:/ usr / include / eigen3中的Eigen版本3.2.92      - 找到所需的Ceres依赖:glog      - 执行测试GFLAGS_IN_GOOGLE_NAMESPACE      - 执行测试GFLAGS_IN_GOOGLE_NAMESPACE - 成功      - 找到所需的Ceres依赖:gflags      - 发现Ceres版本:1.13.0安装在:/ usr / local中包含组件:[LAPACK,SuiteSparse,SparseLinearAlgebraLibrary,CXSparse,SchurSpecializations,OpenMP]      - 检查SFM deps ...是的      - 模块opencv_sfm被禁用,因为找不到以下依赖项:Eigen     CMakeLists.txt处的CMake错误:35(ocv_module_disable):       未知的CMake命令“ocv_module_disable”。     CMakeLists.txt中的CMake警告(dev):       没有cmake_minimum_required命令。一行代码如     cmake_minimum_required(版本3.5)     应该添加在文件的顶部。指定的版本可能更低       如果您希望为此项目支持较旧的CMake版本。更多       信息运行“cmake --help-policy CMP0000”。     此警告适用于项目开发人员。使用-Wno-dev来抑制它。      - 配置不完整,发生错误!

  

PS:在开始之前,我完成了SFM文档页面中提到的所有必需的库下载。

1 个答案:

答案 0 :(得分:0)

我建议您安装所需的依赖项,如Eigen,Google日志,Google Flags和Ceres,并为opencv下载相应的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