ubuntu16.04下安装artoolkit5
目前对AR技术的常见理解就是CV(Computer Vision)+CG(Computer Graphic)。CV的方法很多,简单些比如FREAK+ICP(ARToolKit中的NFT),复杂些就是SLAM(Magic Leap)。CG就没什么好说的,利用CV算法获取到的图形相关信息(比如CG中的模型矩阵、视图矩阵、投影矩阵)进行绘制。从这一点上来说Pokemon GO确实不能算作AR游戏,毕竟人家只是基于LBS的。
从目前来看vision based的AR系统才是主流。但是局限于我个人的见识,只使用过Vuforia、EasyAR、ARToolKit。大家有兴趣的话,可以看一下知乎上的讨论 - 有哪些比较优秀的AR开源项目,或者SDK?
Vuforia没得说,商业SDK,支持的特性也比较多,好像可以支持3D Object Tracking,具体支持到什么程度,还没有尝试,大家感兴趣可以登录Vuforia官网。EasyAR是国内的一款SDK,AR识别性能还是要赞一个,大家可以去看EasyAR官网视频,还是很真实地反映了其性能(不像Magic Leap之前那个鲸鱼的视频),个人还是很看好的,比起Vuforia最大优势是免费使用时不需要水印(^_^;)。而ARToolKit相对上述两个SDK在识别性能和特性上表现的不是很突出,但是ARToolKit胜在开源,如果你需要做一些AR业务扩展,而Vuforia和EasyAR不能满足你,ARToolKit是一个很好的选择。而且AR其中一个趋势就是集成到现有App中,那么使用Vuforia和EasyAR的代价就比较大了。另外作为一个学生,抱着研究学习的心态,ARToolKit就再合适不过了。
所以后期我还是专注于ARToolKit的研究上,听说今年秋天ARToolKit6将发布,还是很期待的,ARToolKit官网链接请戳。
ARToolKit系统核心思路是这样的:

下面以NFT(自然图片追踪,Natural Feature Tracking)为例,简述AR实现流程
1. 通过相机校准(标定),获取到因为相机制造工艺偏差而造成的畸变参数,也就是相机内参(intrinsic matrix),来复原相机模型的3D空间到2D空间的一一对应关系。这对后面的特征提取步骤有很大作用。
2. 根据相机本身的硬件参数,我们可以计算出相应的投影矩阵(Projection Matrix)。
3. 对待识别的自然图片(也就是任意的一张二维图片)进行特征提取,获取到一组特征点{P1}。
4. 实时对相机获取到的图像进行特征提取,也是一组特征点{P2}。
5. 使用ICP(Iterative Closest Point)算法来迭代求解这两组特征点的RT矩阵(Rotation&Translation),即Pose矩阵,也就是图形学中常说的模型视图矩阵(Model View Matrix)。
6. 有了MVP矩阵(Model View Projection),就可以进行图形绘制了。
ARToolKit支持特性
目前来说,ARToolKit支持自然图片/Marker/2D BarCode的识别。
- 自然图片处理
这个应用比较广泛,对用户的限制也会小很多。不过最好使用一些特征比较明显的图像,效果会更好。
- Marker/MultiMarker
这是一种经过特殊处理的图像,需要在边缘包裹两层,最外侧是包裹了白色/浅色边缘,内侧是包裹了黑色边缘,大家猜也能猜出来这样做主要是提高识别度,同时也方便计算Pose(因为可以直接提取边缘来计算Pose)。如下图:

- 2D BarCode(二维码)
这个没什么好说的,最常见的。
另外ARToolKit目前支持的渲染引擎是OSG(OpenSceneGraph),不过版本比较低。当然,你也可以使用OpenGL ES进行绘制。毕竟我们只需要获取到了MVP矩阵,理论上绘制部分是可以完全分开的。
参考资料
实际体验
ubuntu16.04下安装artoolkit
github上有artoolkit在linux上的安装文档,https://github.com/artoolkit/artoolkit5
安装依赖项
sudo apt install clang
sudo apt install libc++-dev
ARToolKit follows the Linux model whereby required software is externally installed. The following packages are required to be installed in your package manager to run the ARToolKit examples. (Additional packages required to build ARToolKit from source are listed on that help page.)
- C++ runtime: use the standard libstdc++ or install the package 'libc++1'.
- OpenGL: Package 'xorg'
- OpenCV (unless building with Clang). Packages: 'libopencv-dev'.
- GLUT: Package 'freeglut3'. Alternatively, GLUT can be built from source and is also included in the MESA 3D libraries:
- Video4Linux, lib1394dc, or GStreamer. Packages: 'libv4l2-0', 'libdc1394-22' (for lib1394 version 2.x) or 'libdc1394-13' (for lib1394 version 1.x), and 'libgstreamer1.0' or 'libgstreamer0.10'.
- OpenSceneGraph (optional; The ARToolKit OSG renderer requires OpenSceneGraph). Package 'openscenegraph'.
- 安装需要 OpenGL OpenCV Video4Linux 可选OpenSceneGraph
sudo apt install libc++
sudo apt install libopencv-dev
sudo apt-get install libdc1394- libraw1394-dev
sudo apt-get install libv4l-dev
sudo apt-get install libgstreamer1.
sudo apt-get install libgstreamer0.
以上依赖项都安装完成后,就可以下载artoolkit的源码编译安装
git clone https://github.com/artoolkit/artoolkit5.git
cd到源文件目录下执行
cd artoolkit5
./share/artoolkit5-setenv
./Configure
./Configure
make
一路 y,没有报错的话就安装成功了
好了之后 就会发现有一个bin目录:

再跑它的例子的时候要注意一下:
Linux:
simpleLite can be launched from a terminal window thus:
- First, set the environment variable ARTOOLKIT5_VCONF to indicate the video device to be used; for example, to use a Video4Linux2 camera, do:
export ARTOOLKIT5_VCONF="-module=V4L2"or to use a camera driven via GStreamer, doexport ARTOOLKIT5_VCONF="-module=GStreamer" - then cd to the bin directory and do
./simpleLite
也可以参考一下 他的博文:https://blog.csdn.net/sinat_37335165/article/details/73467764
参考:
[1] http://www.cnblogs.com/polobymulberry/p/5857372.html
[2] https://blog.csdn.net/weixin_41330194/article/details/80607382
ubuntu16.04下安装artoolkit5的更多相关文章
- Ubuntu16.04下安装数据库oracle客户端
在Ubuntu16.04下安装oracle数据库客户端,使Django项目连接到远程Oracle数据库. 1.下载oracle客户端安装包: 进入官网http://www.oracle.com/tec ...
- Ubuntu16.04下安装redis
Ubuntu16.04下安装redis 保证网络畅通,选定好下载工作路径,执行以下命令下载redis-3.2.6: sudo wget http://download.redis.io/release ...
- docker学习笔记(一)—— ubuntu16.04下安装docker
docker学习笔记(一)—— ubuntu16.04下安装docker 原创 2018年03月01日 14:53:00 标签: docker / ubuntu 1682 本文开发环境为Ubuntu ...
- Ubuntu16.04下安装多版本cuda和cudnn
Ubuntu16.04下安装多版本cuda和cudnn 原文 https://blog.csdn.net/tunhuzhuang1836/article/details/79545625 前言 因为之 ...
- Ubuntu16.04下安装Hadoop
一.记录理由 刚开始只是想要学习怎么使用Hive的.想着安装应该很简单,没想到花了整整一天的时间来安装,为了避免下次犯同样的错误,特此记录. 二.安装Hadoop 网上教你怎么安装Hadoop的文章有 ...
- Ubuntu16.04下安装texlive
Ubuntu 16.04下安装texlive的步骤如下: 1.下载texlive 打开终端输入:sudo apt-get install texlive-full #下载这一过程会持续10-20分钟 ...
- Ubuntu16.04下安装googlechrome flash 插件和安装网易云音乐
一.ubuntu 16.04 下安装完后发现 flash无法播放没有安装flash插件因为 Adobe Flash 不再支持 linux Google 便开发了PepperFlashPlayer来替代 ...
- ubuntu16.04下安装opencv3.4.1及其扩展模块
1.源文件下载 opencv-3.4.1.tar.gz(https://github.com/opencv/opencv/releases) opencv_contrib-3.4.1.tar.gz(h ...
- 深度学习环境配置:Ubuntu16.04下安装GTX1080Ti+CUDA9.0+cuDNN7.0完整安装教程(多链接多参考文章)
本来就对Linux不熟悉,经过几天惨痛的教训,参考了不知道多少篇文章,终于把环境装好了,每篇文章或多或少都有一些用,但没有一篇完整的能解决我安装过程碰到的问题,所以决定还是自己写一篇我安装过程的教程, ...
随机推荐
- 一个日志模板,从traceback打印异常受启发做的模板,可被pycharm esclip 等ide识别和跳转
之前发过日志,再增加一种模板. logging.Formatter('%(asctime)s - %(name)s - File "%(pathname)s", line %(li ...
- AngularJS------使用VSCode创建的Angular项目部署IIS
转载: http://www.cnblogs.com/kingkangstudy/p/7699710.html 1.进入项目src,执行命令行:ng build 2.步骤1后会生成dist文件 3.打 ...
- 8 -- 深入使用Spring -- 3...4 在ApplicationContext中使用资源
8.3.4 在ApplicationContext中使用资源 不管以怎样的方式创建ApplicationContext实例,都需要为ApplicationContext指定配置文件,Spring允许使 ...
- 基于net.tcp的WCF配置实例解析(转)
http://www.cnblogs.com/scy251147/archive/2012/11/23/2784902.html 原文 本文主要通过文件配置来讲解如何编写一个基于net.tcp的Win ...
- vue实现百度搜索下拉提示功能
这段代码用到vuejs和vue-resouece.实现对接智能提示接口,并通过上下键选择提示项,按enter进行搜索 <!DOCTYPE html> <html lang=" ...
- MyBatis入门程序之Mapper代理方式
Mapper代理的开发方式,程序员只需要编写mapper接口(相当于dao接口)即可,MyBatis会自动为mapper接口生成动态代理实现类. 一.开发规范 1.mapper接口的全限定名要和map ...
- 【django】Error: [WinError 10013] 以一种访问权限不允许的方式做了一个访问套接字的尝试。
问题描述:启动django服务时出现“Error: [WinError 10013] 以一种访问权限不允许的方式做了一个访问套接字的尝试.”的错误 问题原因:8000端口被占用了 解决办法:默认启动的 ...
- C#中的垃圾回收机制与delegate
在DeepStream的C#版本调试过程中,发现了一个问题,运行一段时间后,大概每次内存到16M(Debug模式)就会异常 错误“System.NullReferenceException:未将对象引 ...
- codeforces水题100道 第十四题 Codeforces Round #321 (Div. 2) A. Kefa and First Steps (brute force)
题目链接:http://www.codeforces.com/problemset/problem/580/A题意:求最长连续非降子序列的长度.C++代码: #include <iostream ...
- MySQL使用查询结果生成临时表
MySQL中不支持对同一个表使用其查询结果更新or删除本表内数据(也就是update或delete后的where条件为针对相同表的select),解决方案是创建临时表做过度保存中间数据: 可以直接使用 ...