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

2023-12-18 05:32

本文主要是介绍ArUco----一个微型现实增强库的介绍及视觉应用(一),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

原来ARUCO就是一个增强现实库,怪不得有人用它做AR

https://blog.csdn.net/sinat_16643223/article/details/114261925

转载自:https://www.cnblogs.com/shawn0102/p/7911735.html

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

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

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

1

2

3

4

5

6

7

8

├── 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, 增项现实, 视觉应用

这篇关于ArUco----一个微型现实增强库的介绍及视觉应用(一)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/507203

相关文章

Python中随机休眠技术原理与应用详解

《Python中随机休眠技术原理与应用详解》在编程中,让程序暂停执行特定时间是常见需求,当需要引入不确定性时,随机休眠就成为关键技巧,下面我们就来看看Python中随机休眠技术的具体实现与应用吧... 目录引言一、实现原理与基础方法1.1 核心函数解析1.2 基础实现模板1.3 整数版实现二、典型应用场景2

Python Dash框架在数据可视化仪表板中的应用与实践记录

《PythonDash框架在数据可视化仪表板中的应用与实践记录》Python的PlotlyDash库提供了一种简便且强大的方式来构建和展示互动式数据仪表板,本篇文章将深入探讨如何使用Dash设计一... 目录python Dash框架在数据可视化仪表板中的应用与实践1. 什么是Plotly Dash?1.1

Android Kotlin 高阶函数详解及其在协程中的应用小结

《AndroidKotlin高阶函数详解及其在协程中的应用小结》高阶函数是Kotlin中的一个重要特性,它能够将函数作为一等公民(First-ClassCitizen),使得代码更加简洁、灵活和可... 目录1. 引言2. 什么是高阶函数?3. 高阶函数的基础用法3.1 传递函数作为参数3.2 Lambda

MySQL中慢SQL优化的不同方式介绍

《MySQL中慢SQL优化的不同方式介绍》慢SQL的优化,主要从两个方面考虑,SQL语句本身的优化,以及数据库设计的优化,下面小编就来给大家介绍一下有哪些方式可以优化慢SQL吧... 目录避免不必要的列分页优化索引优化JOIN 的优化排序优化UNION 优化慢 SQL 的优化,主要从两个方面考虑,SQL 语

Java中&和&&以及|和||的区别、应用场景和代码示例

《Java中&和&&以及|和||的区别、应用场景和代码示例》:本文主要介绍Java中的逻辑运算符&、&&、|和||的区别,包括它们在布尔和整数类型上的应用,文中通过代码介绍的非常详细,需要的朋友可... 目录前言1. & 和 &&代码示例2. | 和 ||代码示例3. 为什么要使用 & 和 | 而不是总是使

Python循环缓冲区的应用详解

《Python循环缓冲区的应用详解》循环缓冲区是一个线性缓冲区,逻辑上被视为一个循环的结构,本文主要为大家介绍了Python中循环缓冲区的相关应用,有兴趣的小伙伴可以了解一下... 目录什么是循环缓冲区循环缓冲区的结构python中的循环缓冲区实现运行循环缓冲区循环缓冲区的优势应用案例Python中的实现库

SpringBoot整合MybatisPlus的基本应用指南

《SpringBoot整合MybatisPlus的基本应用指南》MyBatis-Plus,简称MP,是一个MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,下面小编就来和大家介绍一下... 目录一、MyBATisPlus简介二、SpringBoot整合MybatisPlus1、创建数据库和

C++中函数模板与类模板的简单使用及区别介绍

《C++中函数模板与类模板的简单使用及区别介绍》这篇文章介绍了C++中的模板机制,包括函数模板和类模板的概念、语法和实际应用,函数模板通过类型参数实现泛型操作,而类模板允许创建可处理多种数据类型的类,... 目录一、函数模板定义语法真实示例二、类模板三、关键区别四、注意事项 ‌在C++中,模板是实现泛型编程

Python实现html转png的完美方案介绍

《Python实现html转png的完美方案介绍》这篇文章主要为大家详细介绍了如何使用Python实现html转png功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 1.增强稳定性与错误处理建议使用三层异常捕获结构:try: with sync_playwright(

Java使用多线程处理未知任务数的方案介绍

《Java使用多线程处理未知任务数的方案介绍》这篇文章主要为大家详细介绍了Java如何使用多线程实现处理未知任务数,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 知道任务个数,你可以定义好线程数规则,生成线程数去跑代码说明:1.虚拟线程池:使用 Executors.newVir