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