一步步实现ORB-SLAM2

http://www.fengbing.net/

1 opencv 测试

http://blog.csdn.net/u010480194/article/details/54288926

测试安装的opencv 版本

  1. my_pc:~/Desktop$ python
  2. Python 2.7.6
  3. [GCC 4.8.4] on linux2
  4. Type "help", "copyright", "credits" or "license" for more information.
  5. >>> import cv2
  6. >>> cv2.__version__
  7. '2.4.9'
  8. >>>

OpenCV测试:
在某个目录下(如OPENCV_TEST)建立一个test.cpp文件:

gedit test.cpp

  1. #include <cv.h>
  2. #include <highgui.h>
  3.  
  4. using namespace cv;
  5.  
  6. int main(int argc, char* argv[])
  7. {
  8. Mat image;
  9. image = imread("1.jpg");
  10. namedWindow("Display Image", CV_WINDOW_AUTOSIZE);
  11. imshow("Display Image", image);
  12. waitKey(0);
  13. return 0;
  14. }

写一个cmake的makefile,也叫CMakeLists.txt:

gedit CMakeLists.txt

  1. project(test)
  2. find_package(OpenCV REQUIRED)
  3. add_executable(test test)
  4. target_link_libraries(test ${OpenCV_LIBS})
  5. cmake_minimum_required(VERSION 2.8)

编译+运行

  1. cmake .
    make
    ./test

得到可执行文件

2 SGBM 双目计算深度

http://blog.csdn.net/liulina603/article/details/53302168

(1)在上一步的基础上,test.cpp代码替换

  1. #include <highgui.h>
  2. #include <cv.h>
  3. #include <cxcore.h>
  4. #include <iostream>
  5. using namespace std;
  6. using namespace cv;
  7. int main()
  8. {
  9.  
  10. IplImage * img1 = cvLoadImage("left.png",0);
  11. IplImage * img2 = cvLoadImage("right.png",0);
  12. cv::StereoSGBM sgbm;
  13. int SADWindowSize = 9;
  14. sgbm.preFilterCap = 63;
  15. sgbm.SADWindowSize = SADWindowSize > 0 ? SADWindowSize : 3;
  16. int cn = img1->nChannels;
  17. int numberOfDisparities=64;
  18. sgbm.P1 = 8*cn*sgbm.SADWindowSize*sgbm.SADWindowSize;
  19. sgbm.P2 = 32*cn*sgbm.SADWindowSize*sgbm.SADWindowSize;
  20. sgbm.minDisparity = 0;
  21. sgbm.numberOfDisparities = numberOfDisparities;
  22. sgbm.uniquenessRatio = 10;
  23. sgbm.speckleWindowSize = 100;
  24. sgbm.speckleRange = 32;
  25. sgbm.disp12MaxDiff = 1;
  26. Mat disp, disp8;
  27. int64 t = getTickCount();
  28. sgbm((Mat)img1, (Mat)img2, disp);
  29. t = getTickCount() - t;
  30. cout<<"Time elapsed:"<<t*1000/getTickFrequency()<<endl;
  31. disp.convertTo(disp8, CV_8U, 255/(numberOfDisparities*16.));
  32.  
  33. namedWindow("left", 1);
  34. cvShowImage("left", img1);
  35. namedWindow("right", 1);
  36. cvShowImage("right", img2);
  37. namedWindow("disparity", 1);
  38. imshow("disparity", disp8);
  39. waitKey();
  40. imwrite("sgbm_disparity.png", disp8);
  41. cvDestroyAllWindows();
  42. return 0;
  43. }

(2)编译+运行

  1. cmake .
    make
    ./test

3 特征点检索

fast特征点

http://www.fengbing.net/2015/07/26/%E4%B8%80%E4%B8%AA%E7%AE%80%E5%8D%95%E7%9A%84%E8%A7%86%E8%A7%89%E9%87%8C%E7%A8%8B%E8%AE%A1%E5%AE%9E%E7%8E%B01/

双目SLAM(2) opencv的更多相关文章

  1. 一个基于深度学习回环检测模块的简单双目 SLAM 系统

    转载请注明出处,谢谢 原创作者:Mingrui 原创链接:https://www.cnblogs.com/MingruiYu/p/12634631.html 写在前面 最近在搞本科毕设,关于基于深度学 ...

  2. 【双目备课】OpenCV例程_stereo_calib.cpp解析

    stereo_calib是OpenCV官方代码中提供的最正统的双目demo,无论数据集还是代码都有很好实现. 一.代码效果: 相关的内容包括28张图片,1个xml和stereo_calib.cpp的代 ...

  3. 双目SLAM(1) 总配置

    kitti 数据集   图像+相机参数 sgbm gpu     算深度 cuda sifi       算匹配点 rabsac         随机筛选 1)CUDA配置(自己配置)8.0 参考网页 ...

  4. 三维重建:SLAM的粒度和工程化问题

    百度百科的定义.此文引用了其他博客的一些图像,如有侵权,邮件联系删除. 申明一下,SLAM不是一个算法,而是一个工程. 在计算机视觉中, 三维重建是指根据单视图或者多视图的图像重建三维信息的过程. 由 ...

  5. 三维重建:SLAM算法的考题总结

    参考英文维基:https://en.wikipedia.org/wiki/Slam 参考文档:视觉slam研究分析的一点认识 1. 请简单描述您对机器人的SLAM的概念理解? 答: 机器人需要在自身位 ...

  6. 泡泡一分钟:FMD Stereo SLAM: Fusing MVG and Direct Formulation Towards Accurate and Fast Stereo SLAM

    FMD Stereo SLAM: Fusing MVG and Direct Formulation Towards Accurate and Fast Stereo SLAM FMD Stereo ...

  7. 83 项开源视觉 SLAM 方案够你用了吗?

    作者:吴艳敏 来源:83 项开源视觉 SLAM 方案够你用了吗? 前言 1. 本文由知乎作者小吴同学同步发布于https://zhuanlan.zhihu.com/p/115599978/并持续更新. ...

  8. ORB-SLAM3论文阅读:ORB-SLAM3: An Accurate Open-Source Library for Visual, Visual-Inertial and Multi-Map SLAM

    简介 ORB-SLAM3是第一个能在单目.双目.RGBD鱼眼相机和针孔相机模型下运行视觉.视觉-惯导以及多地图SLAM的系统.其贡献主要包括两方面:提出了完全依赖于最大后验估计的紧耦合视觉-惯导SLA ...

  9. 基于Ubuntu的ORB-SLAM2项目环境搭建过程

    目录 关于ORB-SLAM2 环境搭建 已有环境 创建环境 新建项目目录 安装Pangolin 安装OpenCV 3.2 安装Eigen DBoW2 and g2o (Included in Thir ...

随机推荐

  1. 代码创建 WPF 旋转、翻转动画(汇总)

    先建立一个button <Button Width="80" Height="60" Content="旋转" Name=" ...

  2. java的四个基本特征

    现实生活中的事物被抽象成对象,把具有相同属性和行为的对象被抽象成类,再从具有相同属性和行为的类中抽象出父类. 封装 隐藏对象的属性和实现细节,仅仅对外公开接口. 封装的有优点: 1.便于使用者正确.方 ...

  3. c# API接受图片文件以文件格式上传图片

    /// 文件图片上传 /// </summary> /// <returns>成功上传返回上传后的文件名</returns> [HttpPost] public a ...

  4. JavaScript初学者必看“new”

    译者按: 本文简单的介绍了new, 更多的是介绍原型(prototype),值得一读. 原文: JavaScript For Beginners: the 'new' operator 译者: Fun ...

  5. WEB前端面试选择题解答(共36题)

    第1题 ["1", "2", "3"].map(parseInt) A:["1", "2", &qu ...

  6. 微信小程序Map组件踩坑日记

    刚刚又发生一个bug,搞得我头皮发麻,本来该美滋滋的回家准备度过愉快的周末,瞬间变成了日常修bug,来,开始填坑之路 情景再现: 首先说一说我们项目的需求, 点击下方,弹出抽屉 点击对应的地图打开相应 ...

  7. 【读书笔记】iOS-应用内购买

    Store Kit框架是一个应用内支付引擎.通过这个框架,付费应用可以实现用户付费购买内容的功能(比如为了获取额外的内容) 如果你发现Store Kit框架很难用,而且应用内付款不需要服务器端的支持, ...

  8. TurboLinux系统管理习题一

    TurboLinux系统管理习题一 1. 使用vi编辑文本只读时,强制存盘并退出的命令是?(单选题)A :w!        B :q!       C   :wq!        D   :e!答案 ...

  9. CSS--选择符大全(常用css选择符)

    (一)元素选择符 E(某个元素,如p) id(使用id,如#idName) class(使用class,如.myclass) 通配符:* (二)关系选择符 包含选择符:E F(E所有的F包含子代,孙代 ...

  10. python自动化开发-3

    python里的集合 1.集合的概念 集合(set):把不同的元素组成一起形成集合,是python基本的数据类型.set集合,是一个无序且不重复的元素集合. 2.集合的主要作用 1)去重 举例说明: ...