创新实训(四)ARCore 图像增强

参照https://blog.csdn.net/weixin_38239050/article/details/88983249
需要的问题大致如图
在这里插入图片描述
1.首先新建一个canvas,将官方扫描框fit_to_scan加入其中
2.选中要识别的图片,右键Create > GoogleARCore > AugmentedImageDatabase.
在这里插入图片描述

在这里插入图片描述
3.右键Create > GoogleARCore > SessionConfig 并命名为ImageSessionConfig

4.将创建的ImageSessionConfig赋值给ARCore Device(从官方实例复制的)
在这里插入图片描述

5.创建脚本AugmentedImageVisualizerOverride.cs,代码如下:挂载到对应预制体上

namespace GoogleARCore.Examples.AugmentedImage

{

    using System;

    using System.Collections.Generic;

    using System.Runtime.InteropServices;

    using GoogleARCore;

    using GoogleARCoreInternal;

    using UnityEngine;

    public class AugmentedImageVisualizerOverride : MonoBehaviour

    {


        public AugmentedImage Image;



        public void Update()

        {

            if (Image == null || Image.TrackingState != TrackingState.Tracking)

            {



                return;

            }

        }

    }

}

6.创建ARCoreImageController.cs 挂载到创建的空物体ARCoreImageController上
在这里插入图片描述

namespace GoogleARCore.Examples.AugmentedImage

{

    using System.Collections.Generic;

    using System.Runtime.InteropServices;

    using GoogleARCore;

    using UnityEngine;

    using UnityEngine.UI;



    public class ARCoreImageController : MonoBehaviour

    {

        [Header("Drag Augmented Image prefab to this")]

        public List<AugmentedImageVisualizerOverride> AugmentedImageVisualizerPrefab;

        [Header("Drag FitToScanOverlay to this")]

        public GameObject FitToScanOverlay;

        private Dictionary<int, AugmentedImageVisualizerOverride> m_Visualizers

          = new Dictionary<int, AugmentedImageVisualizerOverride>();

        private List<AugmentedImage> m_TempAugmentedImages = new List<AugmentedImage>();



        public void Update()

        {



            if (Input.GetKey(KeyCode.Escape))

            {

                Application.Quit();

            }



            if (Session.Status != SessionStatus.Tracking)

            {

                return;

            }



            Session.GetTrackables<AugmentedImage>(m_TempAugmentedImages, TrackableQueryFilter.Updated);



            foreach (var image in m_TempAugmentedImages)

            {

                Debug.Log("name1111111" + image.Name);

                Debug.Log("index1111111" + image.DatabaseIndex);

                AugmentedImageVisualizerOverride visualizer = null;

                m_Visualizers.TryGetValue(image.DatabaseIndex, out visualizer);

                if (image.TrackingState == TrackingState.Tracking && visualizer == null)

                {



                    Debug.Log("name" + image.Name);

                    Debug.Log("index" + image.DatabaseIndex);

                    Anchor anchor = image.CreateAnchor(image.CenterPose);



                    visualizer = AugmentedImageVisualizerPrefab[image.DatabaseIndex];

                    visualizer.gameObject.SetActive(true);



                    visualizer.transform.parent = anchor.transform;

                    visualizer.Image = image;

                    m_Visualizers.Add(image.DatabaseIndex, visualizer);





                }

            }



            foreach (var visualizer in m_Visualizers.Values)

            {

                if (visualizer.Image.TrackingState == TrackingState.Tracking)

                {

                    FitToScanOverlay.SetActive(false);

                    return;

                }

            }



        }

        //重置位置方法

        public void OnclickRe(int index)

        {

            AugmentedImageVisualizerOverride visualizer = null;

            m_Visualizers.TryGetValue(index, out visualizer);

            if (visualizer != null)

            {

                m_Visualizers.Remove(index);

                visualizer.gameObject.SetActive(false);

                FitToScanOverlay.SetActive(true);

            }

        }

    }
}

物体太大了有点飘,后续继续修改
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值