VINS-FUSION 在Opencv4下编译报错,且ceres也报错

 Opencv报错

/home/monica/Documents/code/vins-fusion-old-ws/src/VINS-Fusion-master/camera_models/src/chessboard/Chessboard.cc:20:38: error: ‘CV_GRAY2BGR’ was not declared in this scope
   20 |         cv::cvtColor(image, mSketch, CV_GRAY2BGR);
      |                                      ^~~~~~~~~~~
/home/monica/Documents/code/vins-fusion-old-ws/src/VINS-Fusion-master/camera_models/src/chessboard/Chessboard.cc:26:37: error: ‘CV_BGR2GRAY’ was not declared in this scope
   26 |         cv::cvtColor(image, mImage, CV_BGR2GRAY);
      |                                     ^~~~~~~~~~~
/home/monica/Documents/code/vins-fusion-old-ws/src/VINS-Fusion-master/camera_models/src/chessboard/Chessboard.cc: In member function ‘void camodocal::Chessboard::findCorners(bool)’:
/home/monica/Documents/code/vins-fusion-old-ws/src/VINS-Fusion-master/camera_models/src/chessboard/Chessboard.cc:34:43: error: ‘CV_CALIB_CB_ADAPTIVE_THRESH’ was not declared in this scope
   34 |                                           CV_CALIB_CB_ADAPTIVE_THRESH +
      |                                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/monica/Documents/code/vins-fusion-old-ws/src/VINS-Fusion-master/camera_models/src/chessboard/Chessboard.cc:35:43: error: ‘CV_CALIB_CB_NORMALIZE_IMAGE’ was not declared in this scope
   35 |                                           CV_CALIB_CB_NORMALIZE_IMAGE +
      |                                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/monica/Documents/code/vins-fusion-old-ws/src/VINS-Fusion-master/camera_models/src/chessboard/Chessboard.cc:36:43: error: ‘CV_CALIB_CB_FILTER_QUADS’ was not declared in this scope
   36 |                                           CV_CALIB_CB_FILTER_QUADS +
      |                                           ^~~~~~~~~~~~~~~~~~~~~~~~
/home/monica/Documents/code/vins-fusion-old-ws/src/VINS-Fusion-master/camera_models/src/chessboard/Chessboard.cc: In constructor ‘camodocal::Chessboard::Chessboard(cv::Size, cv::Mat&)’:
/home/monica/Documents/code/vins-fusion-old-ws/src/VINS-Fusion-master/camera_models/src/chessboard/Chessboard.cc:20:38: error: ‘CV_GRAY2BGR’ was not declared in this scope
   20 |         cv::cvtColor(image, mSketch, CV_GRAY2BGR);
      |                                      ^~~~~~~~~~~
/home/monica/Documents/code/vins-fusion-old-ws/src/VINS-Fusion-master/camera_models/src/chessboard/Chessboard.cc:37:43: error: ‘CV_CALIB_CB_FAST_CHECK’ was not declared in this scope
   37 |                                           CV_CALIB_CB_FAST_CHECK,
      |                                           ^~~~~~~~~~~~~~~~~~~~~~
/home/monica/Documents/code/vins-fusion-old-ws/src/VINS-Fusion-master/camera_models/src/chessboard/Chessboard.cc:26:37: error: ‘CV_BGR2GRAY’ was not declared in this scope
   26 |         cv::cvtColor(image, mImage, CV_BGR2GRAY);
      |                                     ^~~~~~~~~~~
/home/monica/Documents/code/vins-fusion-old-ws/src/VINS-Fusion-master/camera_models/src/chessboard/Chessboard.cc: In member function ‘bool camodocal::Chessboard::findChessboardCornersImproved(const cv::Mat&, const Size&, std::vector<cv::Point_<float> >&, int)’:
/home/monica/Documents/code/vins-fusion-old-ws/src/VINS-Fusion-master/camera_models/src/chessboard/Chessboard.cc:144:43: error: ‘CV_CALIB_CB_NORMALIZE_IMAGE’ was not declared in this scope
  144 |     if (image.channels() != 1 || (flags & CV_CALIB_CB_NORMALIZE_IMAGE))
      |                                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/monica/Documents/code/vins-fusion-old-ws/src/VINS-Fusion-master/camera_models/src/chessboard/Chessboard.cc: In member function ‘void camodocal::Chessboard::findCorners(bool)’:
/home/monica/Documents/code/vins-fusion-old-ws/src/VINS-Fusion-master/camera_models/src/chessboard/Chessboard.cc:34:43: error: ‘CV_CALIB_CB_ADAPTIVE_THRESH’ was not declared in this scope
   34 |                                           CV_CALIB_CB_ADAPTIVE_THRESH +
      |                                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/monica/Documents/code/vins-fusion-old-ws/src/VINS-Fusion-master/camera_models/src/chessboard/Chessboard.cc:150:43: error: ‘CV_BGR2GRAY’ was not declared in this scope

这种一般都是OpenCV3->Opencv4迁移的时候,做了很好修改,具体可以参考链接

opencv常见用法和opencv3->opencv4版本切换

Ceres报错

如下所示:

/home/monica/Documents/code/ws/src/ov2slam-main/Thirdparty/ceres-solver/install/include/ceres/internal/integer_sequence_algorithm.h:64:21: error: ‘integer_sequence’ is not a member of ‘std’
   64 | struct SumImpl<std::integer_sequence<T, N, Ns...>> {
      |                     ^~~~~~~~~~~~~~~~
/home/monica/Documents/code/ws/src/ov2slam-main/Thirdparty/ceres-solver/install/include/ceres/internal/integer_sequence_algorithm.h:64:21: error: ‘integer_sequence’ is not a member of ‘std’
/home/monica/Documents/code/ws/src/ov2slam-main/Thirdparty/ceres-solver/install/include/ceres/internal/integer_sequence_algorithm.h:64:46: error: wrong number of template arguments (3, should be 1)
   64 | struct SumImpl<std::integer_sequence<T, N, Ns...>> {
      |                                              ^~~
/home/monica/Documents/code/ws/src/ov2slam-main/Thirdparty/ceres-solver/install/include/ceres/internal/integer_sequence_algorithm.h:60:8: note: provided for ‘template<class Seq> struct ceres::internal::SumImpl’
   60 | struct SumImpl;
      |        ^~~~~~~
/home/monica/Documents/code/ws/src/ov2slam-main/Thirdparty/ceres-solver/install/include/ceres/internal/integer_sequence_algorithm.h:64:49: error: expected unqualified-id before ‘>’ token
   64 | struct SumImpl<std::integer_sequence<T, N, Ns...>> {
      |                                                 ^~
/home/monica/Documents/code/ws/src/ov2slam-main/Thirdparty/ceres-solver/install/include/ceres/internal/integer_sequence_algorithm.h:71:21: error: ‘integer_sequence’ is not a member of ‘std’
   71 | struct SumImpl<std::integer_sequence<T, N1, N2, Ns...>> {
      |                     ^~~~~~~~~~~~~~~~
/home/monica/Documents/code/ws/src/ov2slam-main/Thirdparty/ceres-solver/install/include/ceres/internal/integer_sequence_algorithm.h:71:21: error: ‘integer_sequence’ is not a member of ‘std’
/home/monica/Documents/code/ws/src/ov2slam-main/Thirdparty/ceres-solver/install/include/ceres/internal/integer_sequence_algorithm.h:71:51: error: wrong number of template arguments (4, should be 1)
   71 | struct SumImpl<std::integer_sequence<T, N1, N2, Ns...>> {
      |                                                   ^~~
/home/monica/Documents/code/ws/src/ov2slam-main/Thirdparty/ceres-solver/install/include/ceres/internal/integer_sequence_algorithm.h:60:8: note: provided for ‘template<class Seq> struct ceres::internal::SumImpl’
   60 | struct SumImpl;
      |        ^~~~~~~
/home/monica/Documents/code/ws/src/ov2slam-main/Thirdparty/ceres-solver/install/include/ceres/internal/integer_sequence_algorithm.h:71:54: error: expected unqualified-id before ‘>’ token
   71 | struct SumImpl<std::integer_sequence<T, N1, N2, Ns...>> {
      |                                                      ^~
/home/monica/Documents/code/ws/src/ov2slam-main/Thirdparty/ceres-solver/install/include/ceres/internal/integer_sequence_algorithm.h:78:21: error: ‘integer_sequence’ is not a member of ‘std’
   78 | struct SumImpl<std::integer_sequence<T, N1, N2, N3, N4, Ns...>> {
      |                     ^~~~~~~~~~~~~~~~
/home/monica/Documents/code/ws/src/ov2slam-main/Thirdparty/ceres-solver/install/include/ceres/internal/integer_sequence_algorithm.h:78:21: error: ‘integer_sequence’ is not a member of ‘std’
/home/monica/Documents/code/ws/src/ov2slam-main/Thirdparty/ceres-solver/install/include/ceres/internal/integer_sequence_algorithm.h:78:59: error: wrong number of template arguments (6, should be 1)
   78 | struct SumImpl<std::integer_sequence<T, N1, N2, N3, N4, Ns...>> {
      |                                                           ^~~
/home/monica/Documents/code/ws/src/ov2slam-main/Thirdparty/ceres-solver/install/include/ceres/internal/integer_sequence_algorithm.h:60:8: note: provided for ‘template<class Seq> struct ceres::internal::SumImpl’
   60 | struct SumImpl;
      |        ^~~~~~~
/home/monica/Documents/code/ws/src/ov2slam-main/Thirdparty/ceres-solver/install/include/ceres/internal/integer_sequence_algorithm.h:78:62: error: expected unqualified-id before ‘>’ token
   78 | struct SumImpl<std::integer_sequence<T, N1, N2, N3, N4, Ns...>> {
      |                                                              ^~
/home/monica/Documents/code/ws/src/ov2slam-main/Thirdparty/ceres-solver/install/include/ceres/internal/integer_sequence_algorithm.h:85:21: error: ‘integer_sequence’ is not a member of ‘std’
   85 | struct SumImpl<std::integer_sequence<T, N>> {
      |                     ^~~~~~~~~~~~~~~~
/home/monica/Documents/code/ws/src/ov2slam-main/Thirdparty/ceres-solver/install/include/ceres/internal/integer_sequence_algorithm.h:85:21: error: ‘integer_sequence’ is not a member of ‘std’
/home/monica/Documents/code/ws/src/ov2slam-main/Thirdparty/ceres-solver/install/include/ceres/internal/integer_sequence_algorithm.h:85:41: error: wrong number of template arguments (2, should be 1)
   85 | struct SumImpl<std::integer_sequence<T, N>> {
      |                                         ^
/home/monica/Documents/code/ws/src/ov2slam-main/Thirdparty/ceres-solver/install/include/ceres/internal/integer_sequence_algorithm.h:60:8: note: provided for ‘template<class Seq> struct ceres::internal::SumImpl’
   60 | struct SumImpl;
      |        ^~~~~~~
/home/monica/Documents/code/ws/src/ov2slam-main/Thirdparty/ceres-solver/install/include/ceres/internal/integer_sequence_algorithm.h:85:42: error: expected unqualified-id before ‘>’ token
   85 | struct SumImpl<std::integer_sequence<T, N>> {
      |                                          ^~
/home/monica/Documents/code/ws/src/ov2slam-main/Thirdparty/ceres-solver/install/include/ceres/internal/integer_sequence_algorithm.h:91:21: error: ‘integer_sequence’ is not a member of ‘std’
   91 | struct SumImpl<std::integer_sequence<T>> {
      |                     ^~~~~~~~~~~~~~~~
/home/monica/Documents/code/ws/src/ov2slam-main/Thirdparty/ceres-solver/install/include/ceres/internal/integer_sequence_algorithm.h:91:21: error: ‘integer_sequence’ is not a member of ‘std’
/home/monica/Documents/code/ws/src/ov2slam-main/Thirdparty/ceres-solver/install/include/ceres/internal/integer_sequence_algorithm.h:91:38: error: template argument 1 is invalid
   91 | struct SumImpl<std::integer_sequence<T>> {
      |                                      ^
/home/monica/Documents/code/ws/src/ov2slam-main/Thirdparty/ceres-solver/install/include/ceres/internal/integer_sequence_algorithm.h:91:39: error: expected unqualified-id before ‘>’ token
   91 | struct SumImpl<std::integer_sequence<T>> {
      |                                       ^~
/home/monica/Documents/code/ws/src/ov2slam-main/Thirdparty/ceres-solver/install/include/ceres/internal/integer_sequence_algorithm.h:135:31: error: ‘integer_sequence’ is not a member of ‘std’
  135 |                          std::integer_sequence<T, N, Ns...>,
      |                               ^~~~~~~~~~~~~~~~
/home/monica/Documents/code/ws/src/ov2slam-main/Thirdparty/ceres-solver/install/include/ceres/internal/integer_sequence_algorithm.h:135:31: error: ‘integer_sequence’ is not a member of ‘std’
/home/monica/Documents/code/ws/src/ov2slam-main/Thirdparty/ceres-solver/install/include/ceres/internal/integer_sequence_algorithm.h:135:59: error: template argument 3 is invalid
  135 |                          std::integer_sequence<T, N, Ns...>,
      |                                                           ^
/home/monica/Documents/code/ws/src/ov2slam-main/Thirdparty/ceres-solver/install/include/ceres/internal/integer_sequence_algorithm.h:135:59: error: type/value mismatch at argument 4 in template parameter list for ‘template<class T, T Sum, class SeqIn, class SeqOut> struct ceres::internal::ExclusiveScanImpl’
/home/monica/Documents/code/ws/src/ov2slam-main/Thirdparty/ceres-solver/install/include/ceres/internal/integer_sequence_algorithm.h:135:59: note:   expected a type, got ‘N’
/home/monica/Documents/code/ws/src/ov2slam-main/Thirdparty/ceres-solver/install/include/ceres/internal/integer_sequence_algorithm.h:146:39: error: ‘integer_sequence’ is not a member of ‘std’
  146 | struct ExclusiveScanImpl<T, Sum, std::integer_sequence<T>, SeqOut> {
      |                                       ^~~~~~~~~~~~~~~~
/home/monica/Documents/code/ws/src/ov2slam-main/Thirdparty/ceres-solver/install/include/ceres/internal/integer_sequence_algorithm.h:146:39: error: ‘integer_sequence’ is not a member of ‘std’
/home/monica/Documents/code/ws/src/ov2slam-main/Thirdparty/ceres-solver/install/include/ceres/internal/integer_sequence_algorithm.h:146:57: error: wrong number of template arguments (3, should be 4)
  146 | struct ExclusiveScanImpl<T, Sum, std::integer_sequence<T>, SeqOut> {
      |                                                         ^
/home/monica/Documents/code/ws/src/ov2slam-main/Thirdparty/ceres-solver/install/include/ceres/internal/integer_sequence_algorithm.h:130:8: note: provided for ‘template<class T, T Sum, class SeqIn, class SeqOut> struct ceres::internal::ExclusiveScanImpl’
  130 | struct ExclusiveScanImpl;
      |        ^~~~~~~~~~~~~~~~~
/home/monica/Documents/code/ws/src/ov2slam-main/Thirdparty/ceres-solver/install/include/ceres/internal/integer_sequence_algorithm.h:160:53: error: ‘integer_sequence’ is not a member of ‘std’
  160 |       typename ExclusiveScanImpl<T, T(0), Seq, std::integer_sequence<T>>::Type;
      |                                                     ^~~~~~~~~~~~~~~~
/home/monica/Documents/code/ws/src/ov2slam-main/Thirdparty/ceres-solver/install/include/ceres/internal/integer_sequence_algorithm.h:160:53: error: ‘integer_sequence’ is not a member of ‘std’
/home/monica/Documents/code/ws/src/ov2slam-main/Thirdparty/ceres-solver/install/include/ceres/internal/integer_sequence_algorithm.h:160:70: error: template argument 4 is invalid
  160 |       typename ExclusiveScanImpl<T, T(0), Seq, std::integer_sequence<T>>::Type;

一般这个,大家都说是ceres版本的问题,重新切换回更低版本,但是我们总是希望用更高一点的版本去做进一步开发,毕竟新版本可能提高了速度、减少了CPU资源占用、新加了算法、解决了之前的一些bug等等。其实这个问题没那么复杂,只需要把CMakeList中的 set(CMAKE_CXX_FLAGS "-std=c++11")改成set(CMAKE_CXX_FLAGS "-std=c++14")即可

修改后的源码链接

完整可以编译通过的代码,本人已上传,链接如下:

文件下载-奶牛快传 Download |CowTransfer

b7x7fp

  • 18
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值