ArUco----一个微型现实增强库的介绍及视觉应用(一)

一、ArUco简介

  ArUco是一个开源的微型的现实增强库,目前好像已经集成在OpenCV3.0以上的版本内了,它除了用于现实增强,还很用于实现一些机器视觉方面的应用,上图中的波士顿动力也曾用此方法用于Atlas的视觉定位,下面是两个重要的网址:

  ArUco下载地址:https://sourceforge.net/projects/aruco/files/(可以下载2.0.19或3.0.0)

  ArUco的Marker生成网址:http://terpconnect.umd.edu/~jwelsh12/enes100/markergen.html(可以定制Marker的size、ID以及Padding)

  ArUco开源库的几个特点如下:

    1.基于C++;

    2.仅依赖于OpenCV(≥2.4.9)和Eigen3(源码中已经包含);

    3.BDS开源。

二、ArUco安装

  本示例以Linux(Ubuntu14.04)为例进行安装和使用说明。按照上节地址下载完成源码后放在Linux系统自己的某个文件夹下面,然后进行安装,具体步骤为:

  1. cd aruco-2.0.19(进入目录);

  2. mkdir build(建立编译文件夹);

  3.cd build(进入文件夹);

  4.cmake ..

  5.make -j4

  至此编译安装完成,主目录树如下:

├── matlab
├── src
│   └── markerlabelers
├── tests
├── utils
├── utils_calibration
├── utils_gl
└── utils_markermap

  src----源码;

  utils----使用示例;

  utils_calibration----相机校准程序;

  utils_markermap----Marker Map使用示例;

  utils_gl----本库及OpenGL的使用;

utils----单独视觉标志检测示例;

三、ArUco使用

  该库主要的类主要有:

  aruco::Marker----视觉标志类; 
  aruco::MarkerDetector----视觉标志检测类;
  aruco::MarkerPoseTracker----视觉标志姿态预估类;
  aruco::MarkerMap-----视觉标志地图类; 
  aruco::MarkerMapPoseTracker----视觉标志地图姿态预估类;
  aruco::CvDrawingUtils----绘图类;

四、利用ArUco对相机进行校准

  

视觉校准标准标志地图

  在文件夹/aruco-2.0.19/utils_calibration内,可以看到:aruco_calibration_board_a4.pdf,打印出来就可以用于相机的校准了,具体步骤如下:

进入刚才编译完成的文件夹:/aruco-2.0.19/build/utils_calibration,该相机校准支持图片方式、录像方式和实时模式(本文以后者为例),在此文件夹下,输入命令:

/aruco-2.0.19/build/utils_calibration$ ./aruco_calibration live out_camera_calibration.yml -size "0.04"

几个参数解释如下:

live ----实时模式;

out_camera_calibration.yml ----校准参数输出文件名称;

-size "0.04"----校准标志的尺寸(单位:m)

正常会出现如下信息:
0.04 500 8e-05
Press 'a'' to add current view to the pool of images used for calibration
Press 'c' to perform calibration
Press 's' to start/stop capture

此时按照指示输入字母s开始图像捕捉,每次找到合适的视角后就点击a,直到所有的视角都完成后输入c开始相机校准,最后效果如下图所示:

  至此,我们对这个开源库有了基本的了解,下一篇将举一个具体的使用的代码供参考。

<-- 本篇完 -->

欢迎留言、私信、邮箱、微信等任何形式的技术交流。

作者信息:

名称:Shawn

邮箱:zhanggx0102@163.com

微信二维码:↓

ArUco----一个微型现实增强库的介绍及视觉应用(一)的更多相关文章

  1. ArUco----一个微型现实增强库的介绍及视觉应用(二)

    ArUco----一个微型现实增强库的介绍及视觉应用(二) 一.第一个ArUco的视觉应用 首先介绍第一个视觉应用的Demo,这个应用场景比较简单,下面具体介绍: 1. 应用场景 主线程:通过摄像头检 ...

  2. 用 Lua 实现一个微型虚拟机-基本篇

    用 Lua 实现一个微型虚拟机-基本篇 目录 介绍 机器指令模拟 最终核心代码 虚拟机内部状态可视化 完整项目代码 后续计划 参考 介绍 在网上看到一篇文章 使用 C 语言实现一个虚拟机, 这里是他的 ...

  3. 介绍一个python视频处理库:moviepy

    由于博客园的插件和我自己博客的插件不一致,代码以及视频插入转换很麻烦,所以还是我原来博客的地址查看吧. 介绍一个python视频处理库:moviepy

  4. dotweb——go语言的一个微型web框架(一)

    dotweb是16年正式托管到github的一个开源项目,go语言的web框架目前也有很多,出名的有bee和echo.它们都是很优秀的框架,但是我们喜欢更轻.更小的东西,经历一些之后我们更青睐微服务这 ...

  5. 【Tool】Augmentor和imgaug——python图像数据增强库

    Augmentor和imgaug--python图像数据增强库 Tags: ComputerVision Python 介绍两个图像增强库:Augmentor和imgaug,Augmentor使用比较 ...

  6. Python常用的库简单介绍一下

    Python常用的库简单介绍一下fuzzywuzzy ,字符串模糊匹配. esmre ,正则表达式的加速器. colorama 主要用来给文本添加各种颜色,并且非常简单易用. Prettytable ...

  7. Go语言标准库log介绍

    Go语言标准库log介绍 无论是软件开发的调试阶段还是软件上线之后的运行阶段,日志一直都是非常重要的一个环节,我们也应该养成在程序中记录日志的好习惯. log Go语言内置的log包实现了简单的日志服 ...

  8. C 封装一个简单二叉树基库

    引文 今天分享一个喜欢佩服的伟人,应该算人类文明极大突破者.收藏过一张纸币类型如下 那我们继续科普一段关于他的简介 '高斯有些孤傲,但令人惊奇的是,他春风得意地度过了中产阶级的一生,而  没有遭受到冷 ...

  9. JavaFX的扩展控件库ControlsFX介绍

    声明:   本博客文章原创类别的均为个人原创,版权所有.转载请注明出处: http://blog.csdn.net/ml3947,另外本人的个人博客:http://www.wjfxgame.com. ...

随机推荐

  1. canvas动画气球

    canvas小球的动画我用canvas画布实现的小球动画效果,可以参考下 我用canvas画布实现的小球动画效果,可以参考下 我用canvas画布实现的小球动画效果,可以参考下 我用canvas画布实 ...

  2. 51ak带你看MYSQL5.7源码1:main入口函数

    从事DBA工作多年 MYSQL源码也是头一次接触 尝试记录下自己看MYSQL5.7源码的历程 目录: 51ak带你看MYSQL5.7源码1:main入口函数 51ak带你看MYSQL5.7源码2:编译 ...

  3. js对象系列【二】深入理解js函数,详解作用域与作用域链。

    这次说一下对象具体的一个实例:函数,以及其对应的作用域与作用域链.简单的东西大家查下API就行了,这里我更多的是分享自己的理解与技巧.对于作用域和作用域链,相信绝大多数朋友看了我的分享都能基本理解,少 ...

  4. Maven-03: 优化依赖

    已解析依赖: Maven会自动解析项目的直接依赖和传递性依赖,并且根据规则正确判断每个依赖的范围,对于一些依赖冲突,也能进行调节,以确保任何一个构件只有唯一的版本在依赖中存在.在这些工作之后,最后得到 ...

  5. [bzoj1565][NOI2009]植物大战僵尸_网络流_拓扑排序

    植物大战僵尸 bzoj1565 题目大意:给你一张网格图,上面种着一些植物.你从网格的最右侧开始进攻.每个植物可以对僵尸提供能量或者消耗僵尸的能量.每个植物可以保护一个特定网格内的植物,如果一个植物被 ...

  6. 把文件每隔三行合并成一行(awk之RS、ORS与FS、OFS)

    比如文本如下:123abc合并后的结果是:1 2 3a b c #.txt a b c awk之RS.ORS与FS.OFS 转自http://www.cnblogs.com/fhefh/archive ...

  7. Java注解(2)-注解处理器(运行时|RetentionPolicy.RUNTIME)

    如果没有用来读取注解的工具,那注解将基本没有任何作用,它也不会比注释更有用.读取注解的工具叫作注解处理器.Java提供了两种方式来处理注解:第一种是利用运行时反射机制:另一种是使用Java提供的API ...

  8. 获取服务器时间js代码

    function getSevertime(){ var xmlHttp = new XMLHttpRequest(); if( !xmlHttp ){ xmlHttp = new ActiveXOb ...

  9. 一个基于H5audio标签的vue音乐播放器

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. java中的异常类型以及区别????

    一.引言 根据JDK的文档我们能够找到异常所在的包:java.lang.Throwable中,Throwable是所有异常类的根类,error是错误,在java.lang.error中,而Except ...