当前位置:首页 > 编程笔记 > 正文
已解决

Vins-Fusion代码跑通

来自网友在路上 159859提问 提问时间:2023-11-01 00:56:26阅读次数: 59

最佳答案 问答题库598位专家为你答疑解惑

问题环境背景:

首先是Ubuntu2004 电脑里面有opencv3和opencv4共存,

现象:编译的时候ros指向opencv4版本之间的不兼容导致

首先是遇到ceres库的版本问题

然后是

源码安装vins-mono算法问题整理(ROS Melodic + opencv 4.1.1) - 创客智造/爱折腾智能机器人社区

测试环境:Jetson Xavier NX+ Jetpack4.4 + Ubuntu 1804 + ROS Melodic + opencv 4.1.1
 
问题一

  •  编译时报错 error: ‘CV_GRAY2RGB’ was not declared in this scope 等
/home/ubuntu/catkin_ws/src/VINS-Mono/camera_model/src/chessboard/Chessboard.cc: In constructor ‘camodocal::Chessboard::Chessboard(cv::Size, cv::Mat&)’:
/home/ubuntu/catkin_ws/src/VINS-Mono/camera_model/src/chessboard/Chessboard.cc:20:38: error: ‘CV_GRAY2BGR’ was not declared in this scopecv::cvtColor(image, mSketch, CV_GRAY2BGR);^~~~~~~~~~~
/home/ubuntu/catkin_ws/src/VINS-Mono/camera_model/src/chessboard/Chessboard.cc:26:37: error: ‘CV_BGR2GRAY’ was not declared in this scopecv::cvtColor(image, mImage, CV_BGR2GRAY);^~~~~~~~~~~
/home/ubuntu/catkin_ws/src/VINS-Mono/camera_model/src/chessboard/Chessboard.cc: In member function ‘bool camodocal::Chessboard::findChessboardCornersImproved(const cv::Mat&, const Size&, std::vector<cv::Point_<float> >&, int)’:
/home/ubuntu/catkin_ws/src/VINS-Mono/camera_model/src/chessboard/Chessboard.cc:150:43: error: ‘CV_BGR2GRAY’ was not declared in this scopecv::cvtColor(image, norm_img, CV_BGR2GRAY);^~~~~~~~~~~
/home/ubuntu/catkin_ws/src/VINS-Mono/camera_model/src/chessboard/Chessboard.cc:207:67: error: ‘CV_THRESH_BINARY’ was not declared in this scopecv::threshold(img, thresh_img, thresh_level, 255, CV_THRESH_BINARY);^~~~~~~~~~~~~~~~
/home/ubuntu/catkin_ws/src/VINS-Mono/camera_model/src/chessboard/Chessboard.cc: In constructor ‘camodocal::Chessboard::Chessboard(cv::Size, cv::Mat&)’:
/home/ubuntu/catkin_ws/src/VINS-Mono/camera_model/src/chessboard/Chessboard.cc:20:38: error: ‘CV_GRAY2BGR’ was not declared in this scopecv::cvtColor(image, mSketch, CV_GRAY2BGR);^~~~~~~~~~~
/home/ubuntu/catkin_ws/src/VINS-Mono/camera_model/src/chessboard/Chessboard.cc:26:37: error: ‘CV_BGR2GRAY’ was not declared in this scopecv::cvtColor(image, mImage, CV_BGR2GRAY);^~~~~~~~~~~
/home/ubuntu/catkin_ws/src/VINS-Mono/camera_model/src/chessboard/Chessboard.cc:215:57: error: ‘CV_SHAPE_CROSS’ was not declared in this scopecv::Mat kernel1 = cv::getStructuringElement(CV_SHAPE_CROSS, cv::Size(3,3), cv::Point(1,1));^~~~~~~~~~~~~~
/home/ubuntu/catkin_ws/src/VINS-Mono/camera_model/src/chessboard/Chessboard.cc: In member function ‘bool camodocal::Chessboard::findChessboardCornersImproved(const cv::Mat&, const Size&, std::vector<cv::Point_<float> >&, int)’:
/home/ubuntu/catkin_ws/src/VINS-Mono/camera_model/src/chessboard/Chessboard.cc:150:43: error: ‘CV_BGR2GRAY’ was not declared in this scopecv::cvtColor(image, norm_img, CV_BGR2GRAY);^~~~~~~~~~~
/home/ubuntu/catkin_ws/src/VINS-Mono/camera_model/src/chessboard/Chessboard.cc:215:57: note: suggested alternative: ‘CV_WRAP_AS’cv::Mat kernel1 = cv::getStructuringElement(CV_SHAPE_CROSS, cv::Size(3,3), cv::Point(1,1));^~~~~~~~~~~~~~CV_WRAP_AS
/home/ubuntu/catkin_ws/src/VINS-Mono/camera_model/src/chessboard/Chessboard.cc:216:57: error: ‘CV_SHAPE_RECT’ was not declared in this scopecv::Mat kernel2 = cv::getStructuringElement(CV_SHAPE_RECT, cv::Size(3,3), cv::Point(1,1));^~~~~~~~~~~~~
/home/ubuntu/catkin_ws/src/VINS-Mono/camera_model/src/chessboard/Chessboard.cc:320:43: error: ‘CV_TERMCRIT_EPS’ was not declared in this scopecv::TermCriteria(CV_TERMCRIT_EPS + CV_TERMCRIT_ITER, 30, 0.1));^~~~~~~~~~~~~~~
/home/ubuntu/catkin_ws/src/VINS-Mono/camera_model/src/chessboard/Chessboard.cc:207:67: error: ‘CV_THRESH_BINARY’ was not declared in this scopecv::threshold(img, thresh_img, thresh_level, 255, CV_THRESH_BINARY);^~~~~~~~~~~~~~~~
/home/ubuntu/catkin_ws/src/VINS-Mono/camera_model/src/chessboard/Chessboard.cc:320:61: error: ‘CV_TERMCRIT_ITER’ was not declared in this scopecv::TermCriteria(CV_TERMCRIT_EPS + CV_TERMCRIT_ITER, 30, 0.1));^~~~~~~~~~~~~~~~
/home/ubuntu/catkin_ws/src/VINS-Mono/camera_model/src/chessboard/Chessboard.cc:215:57: error: ‘CV_SHAPE_CROSS’ was not declared in this scopecv::Mat kernel1 = cv::getStructuringElement(CV_SHAPE_CROSS, cv::Size(3,3), cv::Point(1,1));^~~~~~~~~~~~~~
/home/ubuntu/catkin_ws/src/VINS-Mono/camera_model/src/chessboard/Chessboard.cc:215:57: note: suggested alternative: ‘CV_WRAP_AS’cv::Mat kernel1 = cv::getStructuringElement(CV_SHAPE_CROSS, cv::Size(3,3), cv::Point(1,1));^~~~~~~~~~~~~~CV_WRAP_AS
/home/ubuntu/catkin_ws/src/VINS-Mono/camera_model/src/chessboard/Chessboard.cc:216:57: error: ‘CV_SHAPE_RECT’ was not declared in this scopecv::Mat kernel2 = cv::getStructuringElement(CV_SHAPE_RECT, cv::Size(3,3), cv::Point(1,1));^~~~~~~~~~~~~
/home/ubuntu/catkin_ws/src/VINS-Mono/camera_model/src/chessboard/Chessboard.cc:320:43: error: ‘CV_TERMCRIT_EPS’ was not declared in this scopecv::TermCriteria(CV_TERMCRIT_EPS + CV_TERMCRIT_ITER, 30, 0.1));^~~~~~~~~~~~~~~
/home/ubuntu/catkin_ws/src/VINS-Mono/camera_model/src/chessboard/Chessboard.cc: In member function ‘void camodocal::Chessboard::generateQuads(std::vector<boost::shared_ptr<camodocal::ChessboardQuad> >&, cv::Mat&, int, int, bool)’:
/home/ubuntu/catkin_ws/src/VINS-Mono/camera_model/src/chessboard/Chessboard.cc:1175:50: error: ‘CV_RETR_CCOMP’ was not declared in this scopecv::findContours(image, contours, hierarchy, CV_RETR_CCOMP, CV_CHAIN_APPROX_SIMPLE);^~~~~~~~~~~~~
/home/ubuntu/catkin_ws/src/VINS-Mono/camera_model/src/chessboard/Chessboard.cc:320:61: error: ‘CV_TERMCRIT_ITER’ was not declared in this scopecv::TermCriteria(CV_TERMCRIT_EPS + CV_TERMCRIT_ITER, 30, 0.1));^~~~~~~~~~~~~~~~
/home/ubuntu/catkin_ws/src/VINS-Mono/camera_model/src/chessboard/Chessboard.cc:1175:65: error: ‘CV_CHAIN_APPROX_SIMPLE’ was not declared in this scopecv::findContours(image, contours, hierarchy, CV_RETR_CCOMP, CV_CHAIN_APPROX_SIMPLE);^~~~~~~~~~~~~~~~~~~~~~
/home/ubuntu/catkin_ws/src/VINS-Mono/camera_model/src/chessboard/Chessboard.cc: In member function ‘void camodocal::Chessboard::generateQuads(std::vector<boost::shared_ptr<camodocal::ChessboardQuad> >&, cv::Mat&, int, int, bool)’:
/home/ubuntu/catkin_ws/src/VINS-Mono/camera_model/src/chessboard/Chessboard.cc:1175:50: error: ‘CV_RETR_CCOMP’ was not declared in this scopecv::findContours(image, contours, hierarchy, CV_RETR_CCOMP, CV_CHAIN_APPROX_SIMPLE);^~~~~~~~~~~~~
/home/ubuntu/catkin_ws/src/VINS-Mono/camera_model/src/chessboard/Chessboard.cc:1175:65: error: ‘CV_CHAIN_APPROX_SIMPLE’ was not declared in this scopecv::findContours(image, contours, hierarchy, CV_RETR_CCOMP, CV_CHAIN_APPROX_SIMPLE);^~~~~~~~~~~~~~~~~~~~~~
/home/ubuntu/catkin_ws/src/VINS-Mono/camera_model/src/chessboard/Chessboard.cc: In member function ‘bool camodocal::Chessboard::checkChessboard(const cv::Mat&, cv::Size) const’:
/home/ubuntu/catkin_ws/src/VINS-Mono/camera_model/src/chessboard/Chessboard.cc:1586:72: error: ‘CV_THRESH_BINARY’ was not declared in this scopecv::threshold(white, thresh, threshLevel + blackWhiteGap, 255, CV_THRESH_BINARY);^~~~~~~~~~~~~~~~
/home/ubuntu/catkin_ws/src/VINS-Mono/camera_model/src/chessboard/Chessboard.cc:1592:55: error: ‘CV_RETR_CCOMP’ was not declared in this scopecv::findContours(thresh, contours, hierarchy, CV_RETR_CCOMP, CV_CHAIN_APPROX_SIMPLE);^~~~~~~~~~~~~
/home/ubuntu/catkin_ws/src/VINS-Mono/camera_model/src/chessboard/Chessboard.cc:1592:70: error: ‘CV_CHAIN_APPROX_SIMPLE’ was not declared in this scopecv::findContours(thresh, contours, hierarchy, CV_RETR_CCOMP, CV_CHAIN_APPROX_SIMPLE);^~~~~~~~~~~~~~~~~~~~~~
/home/ubuntu/catkin_ws/src/VINS-Mono/camera_model/src/chessboard/Chessboard.cc: In member function ‘bool camodocal::Chessboard::checkChessboard(const cv::Mat&, cv::Size) const’:
/home/ubuntu/catkin_ws/src/VINS-Mono/camera_model/src/chessboard/Chessboard.cc:1586:72: error: ‘CV_THRESH_BINARY’ was not declared in this scopecv::threshold(white, thresh, threshLevel + blackWhiteGap, 255, CV_THRESH_BINARY);^~~~~~~~~~~~~~~~
/home/ubuntu/catkin_ws/src/VINS-Mono/camera_model/src/chessboard/Chessboard.cc:1597:56: error: ‘CV_THRESH_BINARY_INV’ was not declared in this scopecv::threshold(black, thresh, threshLevel, 255, CV_THRESH_BINARY_INV);^~~~~~~~~~~~~~~~~~~~
/home/ubuntu/catkin_ws/src/VINS-Mono/camera_model/src/chessboard/Chessboard.cc:1592:55: error: ‘CV_RETR_CCOMP’ was not declared in this scopecv::findContours(thresh, contours, hierarchy, CV_RETR_CCOMP, CV_CHAIN_APPROX_SIMPLE);^~~~~~~~~~~~~
/home/ubuntu/catkin_ws/src/VINS-Mono/camera_model/src/chessboard/Chessboard.cc:1592:70: error: ‘CV_CHAIN_APPROX_SIMPLE’ was not declared in this scopecv::findContours(thresh, contours, hierarchy, CV_RETR_CCOMP, CV_CHAIN_APPROX_SIMPLE);^~~~~~~~~~~~~~~~~~~~~~
/home/ubuntu/catkin_ws/src/VINS-Mono/camera_model/src/chessboard/Chessboard.cc:1597:56: error: ‘CV_THRESH_BINARY_INV’ was not declared in this scopecv::threshold(black, thresh, threshLevel, 255, CV_THRESH_BINARY_INV);/home/ubuntu/catkin_ws/src/VINS-Mono/camera_model/src/calib/CameraCalibration.cc: In member function ‘void camodocal::CameraCalibration::drawResults(std::vector<cv::Mat>&) const’:
/home/ubuntu/catkin_ws/src/VINS-Mono/camera_model/src/calib/CameraCalibration.cc:236:40: error: ‘CV_GRAY2RGB’ was not declared in this scopecv::cvtColor(image, image, CV_GRAY2RGB);^~~~~~~~~~~
/home/ubuntu/catkin_ws/src/VINS-Mono/camera_model/src/calib/CameraCalibration.cc:236:40: note: suggested alternative: ‘CV_GRAPH’cv::cvtColor(image, image, CV_GRAY2RGB);^~~~~~~~~~~CV_GRAPH
/home/ubuntu/catkin_ws/src/VINS-Mono/camera_model/src/calib/CameraCalibration.cc:254:37: error: ‘CV_AA’ was not declared in this scope5, green, 2, CV_AA, drawShiftBits);^~~~~
/home/ubuntu/catkin_ws/src/VINS-Mono/camera_model/src/calib/CameraCalibration.cc:254:37: note: suggested alternative: ‘CV_AVX’5, green, 2, CV_AA, drawShiftBits);^~~~~CV_AVX


解决方法
 

  • 在报错文件上添加头文件 #include <opencv2/imgproc/imgproc_c.h>
  • 单独遇到CV_AA的报错时,也可以将 CV_AA 改为 cv::LINE_AA


问题二
 

  • 编译时报错 error: ‘CV_CALIB_CB_ADAPTIVE_THRESH’ was not declared in this scope 、error: ‘CV_CALIB_CB_NORMALIZE_IMAGE’ was not declared in this scope、error: ‘CV_CALIB_CB_FILTER_QUADS’ was not declared in this scope 和 error: ‘CV_CALIB_CB_FAST_CHECK’ was not declared in this scope


解决方法
 

  • 将CV_CALIB_CB_ADAPTIVE_THRESH、CV_CALIB_CB_NORMALIZE_IMAGE、CV_CALIB_CB_FILTER_QUADS和CV_CALIB_CB_FAST_CHECK修改为 cv::CALIB_CB_ADAPTIVE_THRESH 、 cv::CALIB_CB_NORMALIZE_IMAGE 、cv::CALIB_CB_FILTER_QUADS 和cv::CALIB_CB_FAST_CHECK

 
问题三
 

  • 编译时报错 error: ‘CV_RGB2GRAY’ was not declared in this scope
/home/ubuntu/catkin_ws/src/VINS-Mono/pose_graph/src/ThirdParty/DVision/BRIEF.cpp:53:32: error: ‘CV_RGB2GRAY’ was not declared in this scope cv::cvtColor(image, aux, CV_RGB2GRAY);
^~~~~~~~~~~ 
/home/ubuntu/catkin_ws/src/VINS-Mono/pose_graph/src/ThirdParty/DVision/BRIEF.cpp:53:32: note: suggested alternative: ‘CV_RGB’ cv::cvtColor(image, aux, CV_RGB2GRAY);



解决方法
 

  • 在报错文件上添加头文件 #include<opencv2/imgproc/types_c.h>


问题四
 

  • 编译时遇到报错 error: ‘CV_FONT_HERSHEY_SIMPLEX’ was not declared in this scope

 
解决方法
 

  • 将报错文件上的 CV_FONT_HERSHEY_SIMPLEX 参数改为 cv::FONT_HERSHEY_SIMPLEX

问题5 

 error: 'CV_LOAD_IMAGE_GRAYSCALE' was not declared in this scope

解决办法

CV_LOAD_IMAGE_GRAYSCALE   替换成 cv::IMREAD_GRAYSCALE

 

查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"Vins-Fusion代码跑通":http://eshow365.cn/6-29156-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!