ARCore1.2使用入门(二) ------ ARCore图片识别(unity开发)

25 篇文章 10 订阅

 

为了方便AR开发交流,博主建立了一个群 :891555732,欢迎一起讨论


  • 首先来看看ARCore是否满足你应用的需求:
每个图像数据库可以存储多达1000个参考图像的特征点信息。

ARCore可以在环境中同时跟踪20个图像,但是它不能跟踪同一图像的多个实例。

环境中的物理图像必须至少是15 cm x 15 cm,并且必须是平的(例如,没有褶皱或缠绕在瓶子周围)

一旦被跟踪,ARCore提供对位置、方向和物理大小的估计。随着ARCore收集更多的数据,这些估计不断改进。

ARCore无法追踪移动的图像,但它可以在停止移动后继续跟踪图像。

所有的跟踪都发生在设备上,所以不需要网络连接。参考图像可以在设备上或网络上更新,而不需要更新应用。

(不知道这个是怎么实现的,有没有大神能解惑,因为笔者百度查到的.asset是不能热更新的:https://blog.csdn.net/tutu158/article/details/45099809,这篇博文转了一下才满足他的需求,但是不适用ARCore)

 

  • 选择参考图片的技巧:
增强图像支持PNG和JPEG文件格式。对于JPEG文件,避免对最佳性能进行重压缩。



检测仅基于高对比度的点,因此无论颜色或黑色/白色的参考图像是否被使用,都可以检测到颜色和黑色/白色图像。



图像的分辨率至少应该是300 x 300像素。



使用高分辨率的图像不会提高性能。



避免具有稀疏特征的图像。



避免具有重复功能的图像。



使用arcoreimg工具为每个图像获得0到100的分数。建议75分以上

 

  • 获取最佳追踪的技巧:

物理图像必须占据相机图像的40%。你可以让用户在他们的相机框架中使用FitToScan asset来匹配物理图像。如下图所示:

当一个图像最初被ARCore检测到,并且没有指定预期的物理尺寸时,它的跟踪状态将会暂停。这意味着ARCore已经识别了图像,但是还没有收集到足够的数据来估计它在3D空间中的位置。在图像的跟踪状态跟踪之前,开发人员不应该使用图像的姿态和大小估计。

  • 识别图片的步骤:

选中你要识别的图片,右键-Create > GoogleARCore > AugmentedImageDatabase.

 

                        

打开Assets > GoogleARCore > Examples > AugmentedImage > Configurations,设置AugmentedImageDatabase     

 

查看官方示例脚本(你也可以自己仿写):

                                

第一个参数是:

参考文章:https://segmentfault.com/a/1190000014956669?utm_source=tag-newest

 

代码解析:

             // 检查motion tracking是否在跟踪。
            if (Session.Status != SessionStatus.Tracking)
            {
                return;
            }


            // 为这个框架获取更新的增强图像
            Session.GetTrackables<AugmentedImage>(m_TempAugmentedImages, TrackableQueryFilter.Updated);


            // 为更新的增强图像创建可视化工具和锚点,这些图像是跟踪的
            foreach (var image in m_TempAugmentedImages)
            {
                AugmentedImageVisualizer visualizer = null;
                m_Visualizers.TryGetValue(image.DatabaseIndex, out visualizer);
                if (image.TrackingState == TrackingState.Tracking && visualizer == null)
                {
                    // Create an anchor to ensure that ARCore keeps tracking this augmented image.
                    Anchor anchor = image.CreateAnchor(image.CenterPose);
                    visualizer = (AugmentedImageVisualizer)Instantiate(AugmentedImageVisualizerPrefab, anchor.transform);
                    visualizer.Image = image;
                    m_Visualizers.Add(image.DatabaseIndex, visualizer);
                }
                else if (image.TrackingState == TrackingState.Stopped && visualizer != null)
                {
                    m_Visualizers.Remove(image.DatabaseIndex);
                    GameObject.Destroy(visualizer.gameObject);
                }
            }


            // 如果没有跟踪的图像,就显示出适合扫描的fit-to-scan
            foreach (var visualizer in m_Visualizers.Values)
            {
                if (visualizer.Image.TrackingState == TrackingState.Tracking)
                {
                    FitToScanOverlay.SetActive(false);
                    return;
                }
            }


            FitToScanOverlay.SetActive(true);
        }
    }

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

千喜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值