首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >是时候来点arcore了

是时候来点arcore了

原创
作者头像
老码小张
修改于 2019-03-12 03:33:38
修改于 2019-03-12 03:33:38
1.6K00
代码可运行
举报
文章被收录于专栏:玩转全栈玩转全栈
运行总次数:0
代码可运行

首先ar是什么?

简单的来港,ar就是增强现实技术,它是一种将真实世界信息和虚拟世界信息“无缝”集成的新技术,是把原本在现实世界的一定时间空间范围内很难体验到的实体信息(视觉信息,声音,味道,触觉等),通过电脑等科学技术,模拟仿真后再叠加,将虚拟的信息应用到真实世界,被人类感官所感知,从而达到超越现实的感官体验。真实的环境和虚拟的物体实时地叠加到了同一个画面或空间同时存在。

那么arcore,就好理解了,嗯,是某个为ar开发而实现的sdk,事实上ARCore 为许多最受欢迎的开发环境提供了 SDK。 这些 SDK 为运动跟踪、环境理解和光估测等所有必需 AR 功能提供了原生 API。 您可以利用这些功能构建全新的 AR 体验,或通过 AR 功能增强现有应用。

说的这么好听,来点实际的,搞一个demo看看。

添加了一个虚拟的狮子
添加了一个虚拟的狮子

如上图所示,这个狮子明显不是真实世界的动物,对比之下,这个狗狗就是真实世界中的事物了,那么言外之意就是这个狮子的引入,增强了你对这个真实世界的感官,不是吗?

一、如何一步步来搞起ar

1、首先,你需要将你的android studio升级到3.1

2、其次,如果你想在真机调试的话,(废话,不用真机,你如何拿去给你的小伙伴装逼),你需要保证你的机器在一下机型之中->支持的设备

如果不在,你将退而求其次,使用模拟器也是可以玩的。

二,sdk的导入及xml文件的配置

1,xml文件的配置,很明显摄像头权限是必不可少的,其次还需要一个meta-data,value取值可选必须,这个值依据与你的应用是否必须启用arcore,通常我们选择可选

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!-- AR Optional apps must declare minSdkVersion ≥ 14 -->
<uses-sdk android:minSdkVersion="14" />

<uses-permission android:name="android.permission.CAMERA" /><application>
    <meta-data android:name="com.google.ar.core" android:value="optional" /></application>

2、build.gradle修改

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
android {
    …
    defaultConfig {
        // Sceneform requires minSdkVersion >= 24.
        minSdkVersion 24}
    // Sceneform libraries use language constructs from Java 8.
    // Add these compile options if targeting minSdkVersion < 26.
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

dependencies {// Provides ARCore Session and related resources.
    implementation 'com.google.ar:core:1.7.0'

    // Provides ArFragment, and other UX resources.
    implementation 'com.google.ar.sceneform.ux:sceneform-ux:1.7.0'

    // Alternatively, use ArSceneView without the UX dependency.
    implementation 'com.google.ar.sceneform:core:1.7.0'
}

注意,必须要java8.0才可以跑起来,因为arcore依赖了java8的一些特性,否则会编译失败。

三,开始装逼

1、图像增强

这里官方给到了一个例子,就是一个地球图片:

demo
demo

在这个demo中,他们用这个地球图片构建了一个数据库,这个构建工具是arcoreimg,简单的比方就是这个工具会提取这张图片的特征信息,然后将其存放在数据库中。

好了,数据库构建好之后,启动app,摄像头去扫描这张图片,随后,这张图片就被捕捉到了,然后就接下来就是给图片四周加了个相框。效果如下所示:

找到图像并且给这张图像加了相框
找到图像并且给这张图像加了相框

好了,官方的demo给我们展示了图像增强的一个demo效果就是如此的,请注意,这个过程是离线的,并不需要联网完成。

那么,这个捕捉图像的过程是怎么做的,我们一步步来分析:

  • 数据库的创建

数据库创建是使用arcoreimg这个工具创建的,命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
./arcoreimg build-db --input_images_directory=/path/to/images \
                       --output_db_path=/path/to/myimages.imgdb

具体的可以看链接介绍,使用起来非常方便,但是任然需要注意两点;

  1. 图像的评分很重要,Google建议使用得分至少为 75的图像。怎么测评得分,相信你可以轻松在链接中找到。
  2. 每个图像数据库可以存储最多 1000 张参考图像的特征点信息
  3. 图像的分辨率至少应为 300 x 300 像素

更多的注意事项请参考这里。以上只是我实验的过程中遇到的问题,恰好碰到的点。

当然,你完全可以在现有的图像数据库的基础上添加一个新的图像数据:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Bitmap bitmap;
try (InputStream inputStream = getAssets().open("dog.jpg")) {
  bitmap = BitmapFactory.decodeStream(inputStream);
} catch (IOException e) {
  Log.e(TAG, "I/O exception loading augmented image bitmap.", e);
}
int index = imageDatabase.addImage("dog", bitmap, imageWidthInMeters);
  • 图像追踪

在demo中,我们可以看到这样一句代码,他的意思就是把我们的数据库和ar session相关联起来。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
config.setAugmentedImageDatabase(imageDatabase);
session.configure(config);

那么,我们不禁也 要问一问,这个ar session是什么呢,毫无疑问,最简单的方式,莫过于看源码了,以下就是创建session的全过程,这个是BaseArFragment中的一个片段。可以看到他封装了权限的检查,arcore环境的检查,所以,Google建议先手使用ArFragment来玩arcore,这样会简单点,你也只需要关心自己的业务逻辑,神马权限检查,可用性检查都统统交给他来做。

创建session
创建session

好,session和特征图像数据库挂钩之后:

ARCore 通过将摄像头图像中的特征点匹配图像数据库中的特征点来寻找图像,

每一帧去检查有没有新的augmentImage,PAUSED表示发现了一个augmentImage,接下来的帧会不停跟踪这个augmentImage,比如此时你就可以给scene中添加相框了,添加相框也要相对一个augmentImage,嗯,就是你此时监测到的augmentImage,可以看看代码,相框是怎么添加的

你会发现,你把摄像图移开,然后等会移过去,即便那个图像不在了,相框依然在哪里,好像是记住了那个空间位置一样,这是为什么呢?

答案是:云锚点,我猜的,哈哈~~,因为我目前只能找到这个解释,单肯定不准,因为这里似乎并没有将这个上图红线的位置交给云吧,充其量只能算是伪云锚点,本地的空间位置信息应该是有的。

四,至此,这个图像增强的案例算是已经玩通玩懂了,基于这个点,你能玩写什么花样呢?

我这里将下我自己的一个应用吧,算是给自己学习的一个交代:

我做了一个扫王者荣耀英雄查攻略的app,具体实施的步骤是:

1、到官网去把英雄的图片都下载下来,我使用的是爬虫,因为还是有点多的,代码就懒得给了,不难,网上也有一大堆爬网站图片的,略微改改即可。

2、使用arcoreimg工具将这些英雄图片构建成数据库,在构建之前,你可以用arcoreimg检查下图片质量,发现,会报错,因为你违背了,图片至少300*300像素的规则,怎么办,当然是借助工具进行图片放大了,我用的工具是photozoom,mac试用版,有水印,略不爽,但是能用。

3、我们发现生成数据库的同时,会生成一个

在结合这个index

我们就轻易的知道了,目前扫到的是哪个英雄了,拿到则个id,就可以去查这个英雄的攻略啦~~

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
深入浅出 ARCore
其实关注 ARCore也蛮久了,但一直没有腾出时间来写个总结。正好应朋友之约,我们今天就来好好聊一聊 ARCore.
音视频_李超
2020/04/01
4.1K0
深入浅出 ARCore
ARCore 初探
前言 Google近几年在VR/AR领域动作频频,先是推出Cardboard作为VR体验的敲门砖,随后发布Project Tango作为AR体验的基石,紧接着移动端的VR平台Daydream应运而生,
QQ音乐技术团队
2017/09/26
6.7K3
ARCore 初探
ARCore⭐四、图片识别
2、新建Canvas,添加名为FitToScanOverlay的Raw Image,
星河造梦坊官方
2024/08/15
7190
ARCore⭐四、图片识别
谷歌面部追踪468点,无缝贴合3D人脸,不用深度传感器:定制面具就用ARCore
谷歌发布了ARCore 1.7,可以帮你定制一张3D“面具”,人脸贴合几乎天衣无缝。
量子位
2019/03/08
1.4K0
谷歌面部追踪468点,无缝贴合3D人脸,不用深度传感器:定制面具就用ARCore
快来解锁Google的ARCore 为你带来的AR新体验!
网购家具时,还没下单就想知道放在家中的实际效果? 没有养猫的时间精力,却想要随时随地可以撸猫? 对火星冒险充满好奇,想足不出户就能做个宇航员? 今年2月,我们正式发布了Android 平台的增强现
Android 开发者
2018/05/31
1.3K0
一、Vuforia_AR
        增强现实(Augmented Reality,简称AR),是一种将虚拟信息与真实世界巧妙融合的技术,广泛运用了多媒体、三维建模、实时跟踪及注册、智能交互、传感等多种技术手段,将计算机生成的文字、图像、三维模型、音乐、视频等虚拟信息模拟仿真后,应用到真实世界中,两种信息互为补充,从而实现对真实世界的“增强”。
酱紫安
2020/05/27
1.9K0
谷歌增强现实技术ARCore
简介 随着,今年苹果在6月的WWDC 2017上发布的ARKit,谷歌也在前不久(8月29日),发布了用于Android平台的AR SDK——ARCore。这弥补了AR在Android市场上的空缺,让无数Android用户激动不已,要知道Android拥有超过20亿活跃设备,如果说ARKit是苹果AR的起点,那么说ARCore掀起了移动AR市场的狂潮,ARCore的横空出世意味着AR进入手机大群体用户的生活成为可能。 大约3年前,Google曾发布一个Tango AR,而ARCore也可以看做是Tango的
xiangzhihong
2018/01/26
1.8K0
移动应用开发的新趋势:跨平台与智能化的未来
我是Echo_Wish,今天和大家聊聊移动应用开发的新趋势。随着智能手机的普及和技术的不断进步,移动应用开发领域也在不断演变。开发者们不断探索新的技术和方法,以便提供更出色的用户体验。在本文中,我将详细介绍几个当下最热门的趋势,并通过代码示例来说明其应用。
Echo_Wish
2025/02/21
2000
移动应用开发的新趋势:跨平台与智能化的未来
AR市场初具规模,但AR+新零售仍“犹抱琵琶半遮面”
近日,权威行业分析机构ABI Research在其发布的《Augmented Reality in Retail》报告中称,电子商务和实体零售商都在尝试使用AR来解决诸如高产品退货率、店内流量下降和客
VRPinea
2018/06/11
7620
AREngine概述AREngine开发教程
科学技术的发展拓展了人类感知的深度与广度,增强了人类对世界的认知能力。高速的数据流使信息的传递与获取前所未有的便捷,虚实融合技术的出现,开创了人类认知领域新的维度,推动着信息获取向更高效、直观、更具真实感的方向发展。
张哥编程
2024/12/19
1950
AREngine概述AREngine开发教程
业界 | 通过引入 ML,谷歌 ARCore 实时自拍 AR 的逼真效果更进一步
AI 科技评论按:ARCore 是谷歌于去年 2 月份正式推出的 增强现实(AR)软件开发工具包,给开发者提供了一个开发 AR APP 的平台。不到一个月前,谷歌正式推出 ARCore 1.7 版本,为其添加了前置摄像头 AR 自拍能力以及动画效果支持;而日前,谷歌又为其引入了机器学习技术,使其实时自拍 AR 的逼真效果更进一步,该技术相关的文章发布在谷歌 AI 的官方博客上,AI 科技评论编译如下。
AI科技评论
2019/05/08
1.3K0
业界 | 通过引入 ML,谷歌 ARCore 实时自拍 AR 的逼真效果更进一步
谷歌AR搜索来了!上Chrome不仅能「云吸猫」,更有50种动物可「喂养」
---- 新智元报道   编辑:Q 【新智元导读】谷歌从2019年起开始在搜索中加入3D 动物,并且从那时起增加了越来越多的选项。它甚至与一些博物馆合作,创造了史前生物的3D 版本。目前为止,Android Police 已经列出了他们所发现的所有 AR 动物的清单。 ‍ 谷歌从去年开始在其搜索中显示3D动物,最近,又增加了50种动物,除了小熊猫和猫,还有长颈鹿、牛、斑马、猪和河马等。 如果你喜欢和朋友和家人分享动物AR,谷歌刚刚在其搜索引擎上增加了50个新的动物。 要查看这些3D动物,只需要在
新智元
2023/05/22
5490
谷歌AR搜索来了!上Chrome不仅能「云吸猫」,更有50种动物可「喂养」
Web vs App(AR版)
关于更多机器学习、人工智能、增强现实、Unity、Unreal资源和技术干货,可以关注公众号:AIRX社区,共同学习,一起进步
三次方AIRX
2020/12/06
2.4K0
Google AR 交互的开源与幕后
△ Google I/O 的 AR/VR 沙箱体验区一直人头攒动 在几周前的 Google I/O 上,我们的 AR 开发平台 ARCore 发布了一个重要更新,相信关注我们的开发者们已经知道了:我们添加了诸如 Cloud Anchors 这样的新 API*,从而实现了多用户协作 AR 体验,带来了可以将 2D 图像激活为 3D 对象的 Augmented Images 技术。这些更新将会改变我们今天使用 AR 的方式,并使开发者能够创建更丰富、更沉浸的 AR 应用。 注: Cloud Anchors (
Android 开发者
2018/06/07
1.5K0
ARKit 初探
今年7月Apple推出了AR工具ARKit,着实闪着了大家的眼睛。从目前的评测可以知道 ARKit已经非常成熟,完全可以进行商用了。
音视频_李超
2020/04/01
2.7K0
ARKit 初探
基于Unity的AR开发初探:第一个AR应用程序
记得2014年曾经写过一个Unity3D的游戏开发初探系列,收获了很多好评和鼓励,不过自那之后再也没有用过Unity,因为没有相关的需求让我能用到。目前公司有一个App开发的需求,想要融合一下AR到App中以便为客户提供更好的体验,因此我开始了一些调研和学习,会依次总结一些文章出来与各位分享。此外,也希望能给更多的.NET&.NET Core开发者看到用C#语言开发AR应用的场景,有更多的人使用C#开发应用程序。
Edison Zhou
2019/02/27
2.3K0
Android开发者不可或缺的四大工具
Android开发者不可或缺的四大工具 android以其极强的开放性吸引着世界各地的开发者去开发各种各样的移动应用开发,而各种SDK更是为各个层次的开发者提供了一个可以尽情展示他们专业技能和创造性的平台。虽然Java是各种平台最常用的编程语言,但是一些其它的工具包只支持C、C++和Ruby。除此之外,所要开发应用的特性在一定程度上也决定了开发环境的选择。为此,特为广大的Android开发者整理了四款强大的Android开发工具: 1. Basic4Android Basic4Android是And
10JQKA
2018/05/09
1.2K0
Google VR技术大揭秘
VR 虚拟现实(Virtual Reality)技术是一种可以创建和体验虚拟世界的计算机仿真系统,它利用计算机生成一种模拟环境,是一种多源信息融合的、交互式的三维动态视景和实体行为的系统仿真, 使用户沉浸到该环境中。 附:Wikipedia VR产品 Google VR Oculus HTC Vivi Google VR for Android Google VR SDK同时支持DayDream和CardBoard。 包含了一些用于创建App的简单API和支持DayDream手机、DayDream控制器的复
xiangzhihong
2018/01/26
1.4K0
AR,我们从设计说起
腾讯ISUX isux.tencent.com 社交用户体验设计 今天给大家带来的分享是《AR,我们从设计说起》,希望大家通过这个分享能够快速了解AR的实现原理,AR的设计流程,以及在设计过程中遇到的问题,在最后会分享我这些年做AR设计的一些心得和技巧。 从2013年开始加入腾讯这个大家庭,加入这个大家庭后一直负责QQ相关的设计工作。从2015年开始参与研发短视频APP的设计工作,即是将QQ的社交内容娱乐化,同一些新的技术做结合。 关于AR AR这个词对大众而言并不是一个陌生的词,但是A
腾讯ISUX
2019/07/05
1K0
AR,我们从设计说起
ARKit 教学:如何搭配SceneKit来建立一个简单的ARKit Demo设定ARKit SceneKit View从ARSCNView移除物件
增强现实(Argument Reality)来啰!记得宝可梦(Pokemon Go)吗?它当然也是增强现实的代表之一!Apple终于在iOS11将增强现实带进来,也因为iOS11,未来将会有数不清的iPhones和iPads就会搭载AR功能,这将会让ARKit成为世界最大的平台,是的,如果你对建置增强现实的Apps有兴趣,让你就来对地方了。
iOSDevLog
2018/08/22
1.9K0
ARKit 教学:如何搭配SceneKit来建立一个简单的ARKit Demo设定ARKit SceneKit View从ARSCNView移除物件
推荐阅读
相关推荐
深入浅出 ARCore
更多 >
交个朋友
加入程序员求职内推帮帮群
大厂内推绿色通道 求职攻略分享
加入云原生工作实战群
云原生落地实践 技术难题攻坚探讨
加入架构与运维趋势交流群
技术趋势前瞻 架构演进方向
换一批
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验