首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Rajawali-Vufoira android中实现用户定义的目标?

如何在Rajawali-Vufoira android中实现用户定义的目标?
EN

Stack Overflow用户
提问于 2015-06-11 09:54:37
回答 1查看 993关注 0票数 0

我目前正在使用Rajawali (https://github.com/Rajawali/RajawaliVuforia)开发我的安卓增强现实应用程序。在这里,我可以改变目标,如帧标记,图像目标和它的工作完美。但是我想在我的应用程序中实现用户定义的目标。rajawali中是否有任何选项或功能可用于实现用户定义的目标。谢谢你的帮助

EN

回答 1

Stack Overflow用户

发布于 2015-06-12 03:48:47

使用Image类

  • 使用CameraDevice.SetFrameFormat方法注册所需的图像格式:CameraDevice.Instance.SetFrameFormat(Image.PIXEL_FORMAT.RGB888, true);
  • 在QCARBehaviour有机会运行其Start方法后调用此方法。
  • 使用统一脚本排序特性,或者在Update回调中执行一次。
  • 使用CameraDevice.GetCameraImage方法检索图像。
  • ITrackerEventHandler.OnTrackablesUpdated回调中执行此操作。这样,您可以确保检索与当前帧匹配的最新相机图像。

始终确保相机图像不是空的,因为在注册图像格式后,图像可能需要几个帧才能可用。

下面是完整的脚本:

代码语言:javascript
复制
using UnityEngine;
using System.Collections;
public class CameraImageAccess : MonoBehaviour 
{
    private Image.PIXEL_FORMAT m_PixelFormat = Image.PIXEL_FORMAT.RGB888;
    private bool m_RegisteredFormat = false;
    private bool m_LogInfo = true;
    void Start()
    {
        QCARBehaviour qcarBehaviour = (QCARBehaviour) FindObjectOfType(typeof(QCARBehaviour));
        if (qcarBehaviour)
        {
            qcarBehaviour.RegisterTrackablesUpdatedCallback(OnTrackablesUpdated);
        }
    }
    public void OnTrackablesUpdated()
    {
        if (!m_RegisteredFormat)
        {
            CameraDevice.Instance.SetFrameFormat(m_PixelFormat, true);
            m_RegisteredFormat = true;
        }
        if (m_LogInfo)
        {
            CameraDevice cam = CameraDevice.Instance;
            Image image = cam.GetCameraImage(m_PixelFormat);
            if (image == null)
            {
                Debug.Log(m_PixelFormat + " image is not available yet");
            }
            else
            {
                string s = m_PixelFormat + " image: \n";
                s += "  size: " + image.Width + "x" + image.Height + "\n";
                s += "  bufferSize: " + image.BufferWidth + "x" + image.BufferHeight + "\n";
                s += "  stride: " + image.Stride;
                Debug.Log(s);
                m_LogInfo = false;
            }
        }
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30777415

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档