Win10+VS2019配置Ceres Solver,含Eigen、gflags、glog、merit、suitesparse

Win10+VS2019配置Ceres Solver,含Eigen、gflags、glog、merit、suitesparse

前段时间配置了Ceres Solver库,但是没有安装SuiteSparse,所以昨天又尝试了一下把它也安装上,于是…又配了一整天,失败了一整天,记录一下整个过程以及容易出错的地方。

1.环境

  • Windows 10
  • Visual Studio 2019 Community
  • Cmake GUI 3.19.0

2.源代码包

1.Cere Solver 2.0.0
下载地址 http://ceres-solver.org/installation.html

2.Eigen 3.3.8
著名的矩阵运算库
下载地址 http://eigen.tuxfamily.org/index.php?title=Main_Page

3.gflag
GFlags是Google开源的一个命令行flag(区别于参数)库
下载地址 https://github.com/gflags/gflags

4.glog
Google Glog是Google的一个开源库,用于实现应用级别的logging。 它提供了一系列类似于C++流风格的logging API,以及一些预定义的宏。它有点类似于C里面的assert,但是比它具备更丰富的输出信息以及使用灵活性。
下载地址 https://github.com/google/glog

5.suitesparse-metis-for-windows
这个并不是必须安装的依赖库。但是如果装上将会提高Ceres对稀疏矩阵的计算性能,提供更多可用的优化算法。所以虽然加入这个库之后Ceres的安装过程会更加繁琐,但是仍然推荐安装。这个库的原生版本本身对Windows的支持不好,所以在Windows上要使用这个专门针对Windows的衍生版本。另外,这个库还存在一个名为CXSparse的简化版本。
下载地址https://github.com/jlblancoc/suitesparse-metis-for-windows

3.配置Ceres

首先建立一个文件夹,如D:\Ceres_Install,将下载的源代码包放在该文件夹下,然后把所有源代码解压放到对应的子文件夹内。另外为每个库按照“库名-build”的命名方式新建文件夹,用以存放生成后的工程文件。
配置准备文件层级
再在其中新建一个install文件夹,install里新建5个文件夹。
install里新建文件夹
1.Eigen
启动Cmake,指定源码位置和输出位置,如图
在这里插入图片描述
点击configure,选择vs2019 X64,然后在配置选项中

  • 取消所有Test类项
  • CMAKE_INSTALL_PREFIX=D:\Ceres_Install\install\eigen(是install文件夹中的eigen文件夹)

然后再次点击Configure->Generate->Open Project,,此时会以VS打开项目(也有教程建议以管理员身份运行VS),分别在Release x64和Debug x64下生成INSTALL。
生成全部成功则说明eigen库安装完成,检查D:/Eigen3里是否存在include和share两个文件夹。

2.gflags(在glog前安装)
和Eigen一样,在Cmake中指定gflags的源码位置和输出位置(gflags-build),点击configure,选择vs2019 X64,在配置选项中

  1. 取消选中BUILD_Testing
  2. !!!CMAKE_INSTALL_PREFIX =D:/Ceres_Install/install/gflags
  3. 选中BUILD_SHARED_LIBS 以便生成.dll文件
    gflags

然后再次点击Configure->Generate->Open Project,打开刚生成的解决方案gflags.sln,在VS2019分别在Release x64和Debug x64下生成ALL_BUILD和INSTALL项目。

3.glog
同样的过程,使用CMake将glog的源代码生成为VS工程文件放入glog-build文件夹。同样也要注意CMake配置选项。

  • 取消选中BUILD_TESTING
  • CMAKE_INSTALL_PREFIX = D:/Ceres_Install/install/glog
  • 选中WITH_GFLAGS
  • gflags_DIR = D:/Ceres_Install/install/gflags/lib/cmake/gflags
  • !!! 选中BUILD_SHARED_LIBS以便生成.dll文件。如果该项不存在通过“Add Entry”手动加入。
    glog

然后再次点击Configure->Generate->Open Project,打开刚生成的解决方案glog.sln,在VS2019分别在Release x64和Debug x64下生成ALL_BUILD和INSTALL项目。

4.SuiteSparse
和前几个一样,先Cmake,configure,在配置中

  • 选中BUILD_METIS。
  • 取消选中HAVE_COMPLEX,否则也会有很多莫名其妙的错误,这些错误和平台的兼容性有关。
  • SUITESPARES_INSTALL_PREFIX =D:/Ceres_Install/install/suitesparse 。
  • !!! 取消选中SHARED。如果选中会报错,宣称缺少一系列.lib文件。
  • OPENMP根据需要设置。

configure->generate->open project,打开刚生成的对应解决方案SuiteSparseProject.sln。分别以Debug和Release模式(x64)生成ALL_BUILD项目和INSTALL项目 。

下面我们在刚才的CMake中, 重新选中SHARED项,其他项不变,再次点击generate。之后用Visual Studio重新打开此解决方案。然后此时重新以Debug和Release模式(x64)分别再次生成ALL_BUILD项目和INSTALL项目。因为再上一过程中.lib文件已经被生成并且安装(上一轮编译一定要生成INSTALL),所以这时不会再报错说缺少.lib文件了。此时四个依赖库都安装完毕。

5.Ceres Solver
如果没有安装SuiteSparse,那ceres安装可以参考
http://www.mamicode.com/info-detail-2688186.html
博主写的很详细。

如果安装了SuiteSparse,后续Ceres配置稍微有点繁琐,由于我下载的SuiteSparse库比较新,所以很多博客的教程和我在配置的时候有所出入。这里就记一下我自己的过程。

首先还是Cmake,Configure,然后是配置!

  • 取消选中BUILD_EXAMPLES。为了节省后续编译时间。
  • 取消选中BUILD_TESTING。为了节省后续编译时间。
  • 选中BUILD_SHARED_LIBS,以便生成动态链接库文件。
  • CMAKE_BUILD_TYPE 设为 Release。
  • 选中CUSTOM_BLAS。
  • 添加BLAS_LIBRARIES项(FILEPATH类)赋值 D:/Ceres_Install/suitesparse-master/lapack_windows/x64/libblas.lib
  • 选中LAPACK。
  • 添加LAPACK_LIBRARIES项(FILEPATH类)赋值 D:/Ceres_Install/suitesparse-master/lapack_windows/x64/liblapack.lib
  • 选中EIGENSPARSE。
  • Eigen3_DIR=D:/Ceres_Install/eigen-build
  • 选中GFLAGS和GLOG,并且正确定位。一般再次configure应该可以自动定位,可以勾选上Advanced查看自动定位路径,如果配置信息显示NOTFOUND,可以手动add entry添加
  • 选中SUITESPARSE,注意这一选项会自动取消选中。
  • !!! 添加CMAKE_INSTALL_PREFIX 赋值 D:/Ceres_Install/install/ceres。
  • 重点!!需要手动配置配置AMD、BLAS、CAMD、CCOLAMD、CHOLMOD、CXSPARSE、COLAMD、SUITESPARSE、SUITESPARSEQR等9个头文件的路径以及相应的9个静态库的路径。
    可以点击Grouped,依次手动定位到相应的路径
    AMD
    BLAS

    另附其他配置选项供参考对比
    在这里插入图片描述
    至此,再次Configure,应该没有报错信息了Cmake信息

点击Generate,生成VS工程文件,打开Ceres.sln,切换编译器为Release模式,然后生成ALL_BUILD和INSTALL项目,完成Release模式的编译和安装过程。

切换到Debug模式。然后右键单击“ceres”项目->属性 ->链接器->输入->附加依赖项。这里要注意属性配置也应设为Debug模式。
将以下7个Release版本的库改为Debug版本的库
D:\Ceres_Install\install\suitesparse\lib\libspqr.lib
D:\Ceres_Install\install\suitesparse\lib\libcholmod.lib
D:\Ceres_Install\install\suitesparse\lib\libccolamd.lib
D:\Ceres_Install\install\suitesparse\lib\libcamd.lib
D:\Ceres_Install\install\suitesparse\lib\libcolamd.lib
D:\Ceres_Install\install\suitesparse\lib\libamd.lib
D:\Ceres_Install\install\suitesparse\lib\suitesparseconfigd.lib
调整为Debug版本库:
D:\Ceres_Install\install\suitesparse\lib\libspqrd.lib
D:\Ceres_Install\install\suitesparse\lib\libcholmodd.lib
D:\Ceres_Install\install\suitesparse\lib\libccolamdd.lib
D:\Ceres_Install\install\suitesparse\lib\libcamdd.lib
D:\Ceres_Install\install\suitesparse\lib\libcolamdd.lib
D:\Ceres_Install\install\suitesparse\lib\libamdd.lib
D:\Ceres_Install\install\suitesparse\lib\suitesparseconfigd.lib
然后生成ALL_BUILD和INSTALL项目,完成Debug模式的编译和安装过程。

4.环境变量配置

我的电脑->属性->高级系统设置->环境变量->系统变量->Path->编辑。注意设置完环境变量之后需要重启Visual Studio以生效。在path中添加以下地址:
环境变量配置
安装结束!!

5.测试

在C:/Ceres_Install/ceres-solver/examples有很多实例。可以使用VS新建工程然后复制C++源代码的形式测试。在新建的项目中,要在属性中加入包含目录、库目录以及附加依赖项
包含目录:
包含目录
库目录:
库目录
C/C++>附加包含目录:D:\Ceres_Install\eigen-3.3.8
链接器->输入->附加依赖项(根据自己的需要加吧):
ceres.lib
gflags.lib
glog.lib
libspqr.lib
libcholmod.lib
libccolamd.lib
libcamd.lib
libcolamd.lib
libamd.lib
liblapack.lib
libblas.lib
suitesparseconfig.lib
metis.lib
把example中的helloworld.cc里的代码copy进来,运行,发现有错误信息提示
错误
双击错误信息,跳转到jet.h,在其中添加头文件#include “corecrt_math_defines.h”,即可成功运行。
想测试自己有没有成功安装suitesparse,可以用example中的bundle_adjuster测试,但要记得将example中的bal_problem.h,bal_problem.cpp以及snavely_reprojection_error.h移至工程路径下,同时官网提供了数据集,可以自己下载后放在工程目录下,并在bundle_adjuster.cpp中添加文件名,如“problem-93-61203-pre.txt"
在这里插入图片描述
运行结果:
结果
累了,毁灭吧,祝大家成功配库,愿天下没有配库。

参考博客:
1.http://www.mamicode.com/info-detail-2688186.html
2.https://blog.csdn.net/wzheng92/article/details/79504709
3.https://blog.csdn.net/xixihaha369300/article/details/83546473

  • 11
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 40
    评论
SFM(Structure from Motion)是一种通过从多个相机图像中恢复出场景的三维结构和相机运动的技术。SFM三维重建是SFM技术的一个应用,即通过对多个相机图像进行分析和处理,生成一个精确的三维场景模型。 在SFM三维重建中,BA(Bundle Adjustment)是一个优化方法,用于通过优化相机的位姿和场景的三维结构,以最小化重建误差。在本次回答中,我们使用了一些工具和库来实现SFM三维重建的BA优化。 首先,我们使用VS2015作为开发环境,以便编译和运行我们的代码。其次,我们使用OpenCV3.4,作为我们图像处理和计算机视觉算法的主要库。OpenCV提供了许多用于图像特征提取、匹配和相机校准的函数和类。 此外,我们还使用了PCL(Point Cloud Library)1.8来处理点云数据。PCL是一个广泛使用的库,用于点云处理和三维重建。它提供了许多用于点云滤波、配准和特征提取的算法。 最后,我们使用Ceres Solver来进行BA优化。Ceres Solver是一个用于非线性优化的开源库,它提供了强大的优化算法和工具。在SFM三维重建中,我们使用Ceres Solver来优化相机的位姿和场景的三维结构,以获得更高质量的重建结果。 总之,通过使用VS2015、OpenCV3.4、PCL1.8和Ceres Solver,我们可以实现SFM三维重建的BA优化。这些工具和库提供了许多用于图像处理、点云处理和非线性优化的算法和函数,使我们能够更好地重建三维场景。
评论 40
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值