高博士《一起做RGB-SLAM》在2021年的复现笔记(opencv3.4.1)

代码:https://github.com/gaoxiang12/rgbd-slam-tutorial-gx
教程:https://www.cnblogs.com/gaoxiang12/p/4633316.html

一起做RGB-SLAM(1)(2)

无问题

一起做RGB-SLAM(3)特征提取与配准

首先感谢这篇博客

  1. 增加可执行二进制及其依赖
    在CmakeLists文件里面添加:
ADD_EXECUTABLE( detectFeatures detectFeatures.cpp )
TARGET_LINK_LIBRARIES( detectFeatures 
slambase 
${OpenCV_LIBS} 
    ${PCL_LIBRARIES} )
  1. 特征提取
detectFeatures.cpp:37:16: error: ‘create’ is not a member of ‘cv::FeatureDetector {aka cv::Feature2D}’
     detector = cv::FeatureDetector::create("ORB");

出现这个问题的主要原因是opencv版本不同,针对3.0以后的版本,特征提取器的声明方式有变化:

detector = cv::FeatureDetector::create("ORB"); descriptor = cv::DescriptorExtractor::create("ORB");
改为
detector = cv::ORB::create(); descriptor = cv::ORB::create();

  1. solvePnPRansac函数修改(感谢
OpenCV Error: Assertion failed (confidence > 0 && confidence < 1) in run, file /home/limz/Cmake_module/opencv-3.4.1/modules/calib3d/src/ptsetreg.cpp, line 178
terminate called after throwing an instance of 'cv::Exception'
  what():  /home/limz/Cmake_module/opencv-3.4.1/modules/calib3d/src/ptsetreg.cpp:178: error: (-215) confidence > 0 && confidence < 1 in function run

cv::solvePnPRansac( pts_obj, pts_img, cameraMatrix, cv::Mat(), rvec, tvec, false, 100, 1.0, 100, inliers );
在opencv3.4.1下需要改为:
cv::solvePnPRansac( pts_obj, pts_img, cameraMatrix, cv::Mat(), rvec, tvec, false, 100, 1.0, 0.99, inliers );
才能正常运行。
原因:opencvcv3.4.1中cv::solvePnPRansac限定参数confidence大小在(0,1).
solvePnPRansacsolvePnPansac参数

一起做RGB-SLAM(4)点云拼接

  1. slamBase.cpp
    这里和第三讲的第二个问题解决一样,将 cv::FeatureDetector和cv::DescriptorExtractor改成cv::ORB
    和第三讲第三个问题一样,修改cv::solvePnPRansac函数
  2. error: invalid conversion from ‘const char*’ to ‘int’ [-fpermissive]
    感谢该博客
    在CMakeLists.txt中添加:
    SET(CMAKE_CXX_FLAGS " -fpermissive ${SSE_FLAGS_STR}")
  3. 这一讲高博士的github代码中CMakeLists.txt进行了修改,做的时候容易忽视
    #增加PCL库的依赖 FIND_PACKAGE( PCL REQUIRED COMPONENTS common io )
    改为
    #增加PCL库的依赖 FIND_PACKAGE( PCL REQUIRED COMPONENTS common io visualization)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值