一步步实现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. S3C2440的中断体系结构

    概述 S3C2440A中的中断控制器接受来自60个中断源的请求.提供这些中断源的可以是内部外设,如DMA控制器.UART.IIC等等.在这些中断源中,UARTn.AC97和EINTn中断对于中断控制器 ...

  2. SQL 数据库加字段声明

    ALTER TABLE dbo.C_TrainPlan ADD MailCost DATETIME EXECUTE sp_addextendedproperty N'MS_Description', ...

  3. c# 生成验证码图片

    /// <summary> /// 生成验证码图片 /// </summary> /// <returns></returns> public byte ...

  4. T-SQL:透视数据(十三)

    透视数据实际上就是行状态转为例状态 先加一张测试表 IF OBJECT_ID('dbo.Orders', 'U') IS NOT NULL DROP TABLE dbo.Orders; GO CREA ...

  5. CheckBox-复选框-删除-选中行

    <!--删除选中的行,利用oTable.deleteRow(i)方法--> <!DOCTYPE html> <html xmlns="http://www.w3 ...

  6. Java学习第一篇 — 字符串

    package StringTest; public class TestString { public static void main(String[] args){ // String str= ...

  7. 贝尔数(来自维基百科)& Stirling数

    贝尔数   贝尔数以埃里克·坦普尔·贝尔(Eric Temple Bell)为名,是组合数学中的一组整数数列,开首是(OEIS的A000110数列):   Bell Number Bn是基数为n的集合 ...

  8. 设置div背景透明的CSS样式

    div背景透明样式: 样式代码: .alert{filter:alpha(opacity=100); /* IE */ -moz-opacity:1.0; /* Moz + FF */ opacity ...

  9. inheritPrototypeChain.js

    // 原型链 // 其基本思路是利用原型让一个引用类型继承另一个引用类型的属性和方法 function Person(){ this.name = "Person"; } Pers ...

  10. [转]Serif和Sans-serif字体的区别

    在西方国家罗马字母阵营中,字体分为两大种类:Sans Serif和Serif,打字机体虽然也属于Sans Serif,但由于是等宽字体,所以另外独立出Monospace这一种类,例如在Web中,表示代 ...