《一起做RGB-D SLAM》(3)遇到的问题

**

《一起做RGB-D SLAM》(3)遇到的问题

**
1.SIFI特征点,没有nonfree.hpp模块
解决:下载安装与opencv对应的opencv-contrib,看别人教程说得与opencv同时编译,所以首先得把之前的opencv删除。删除网上教程比较多,这里不详细贴出。
opencv3.2+opencv_contrib3.2 安装参考:opencv3.2+opencv_contrib3.2
注意:高翔博士在github上的源代码更新成不需要使用SIFI特征点,也就不需要安装opencv_contrib模块。如果不需要用到,可以选择不安装,因为安装过程会有很多error!本人大约用了一天时间~才成功,但是目前也没有用到(因为我到后面才看到高博写的更新。。。)。
2.按照高博教程,cmake工程后,make出现fatal error:slamBase.h no such file or directory 没有那个文件或目录
解决:我犯了一个很弱智的错误!难怪上网搜都找不到解决方法。slamBase.h文件程序写错了。。。具体是PointCloud::Ptr image2PointCloud(cv::Mat& rgb,cv::Mat& depth,CAMERA_INTRINSIC_PARAMETERS& camera);中有一个“&”打成"$"。
3.出现error: ‘create’ is not a member of ‘cv::FeatureDetector {aka cv::Feature2D}’
解决:这是因为高博用的opencv2,我用的是opencv3。我把原来的代码修改如下,就可以顺利运行了。

cv::Ptr<cv::ORB> detector;   
    // 如果使用 sift, surf ,之前要初始化nonfree模块
    // cv::initModule_nonfree();
    // _detector = cv::FeatureDetector::create( "SIFT" );
    // _descriptor = cv::DescriptorExtractor::create( "SIFT" ); 
    detector = cv::ORB::create();
    vector< cv::KeyPoint > kp1, kp2; //关键点
    detector->detect( rgb1, kp1 );  //提取关键点
    detector->detect( rgb2, kp2 );
        
        // 计算描述子
    cv::Mat desp1, desp2;
    detector->compute( rgb1, kp1, desp1 );
    detector->compute( rgb2, kp2, desp2 );

4.最后计算两个图像的运动时,又又又出错了,出现opencv-3.2/modules/calib3d/src/ptsetreg.cpp:178: error: (-215) confidence > 0 && confidence < 1 in function run。
解决:网上搜只用改detectFeatures.cpp文件的一个地方就可以了

// 求解pnp
    cv::solvePnPRansac( pts_obj, pts_img, cameraMatrix, cv::Mat(), rvec, tvec, false, 100, 1.0, 0.99, inliers );

最后终于运行成功了,图片就不放了,网上都一样的。总之,遇到bug要不放弃,坚持google。我的第一篇笔记就结束了。
附上opencv3.2和对应版本的opencv_contrib下载链接opencv3.2及opencv_contrib下载

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值