gpt4 book ai didi

android - 如何获得彩色的 ARCore AcquireCameraImageBytes()?

转载 作者:行者123 更新时间:2023-11-29 23:51:22 24 4
gpt4 key购买 nike

我已经被这个问题困了好几天了。我正在尝试对我的项目进行一些图像处理。我查看了 ARCore 提供的计算机视觉示例,但它只显示了如何访问黑白相机框架。我的图像需要颜色。我已经看过 Save AcquireCameraImageBytes() from Unity ARCore to storage as an image没有运气。

我有一个名为 GetImage() 的函数,它应该将相机帧作为纹理返回。

public Texture GetImage() {

if (!Frame.CameraImage.AcquireCameraImageBytes().IsAvailable) {
return null;
}

var ptr = Frame.CameraImage.AcquireCameraImageBytes();
var bufferSize = ptr.Width * ptr.Height * 4;

if (_tex == null) {
_tex = new Texture2D(ptr.Width, ptr.Height, TextureFormat.RGBA32, false, false);
}

if (_bytes == null) {
_bytes = new byte[bufferSize];
}

Marshal.Copy(_ptr.Y, _bytes, 0, bufferSize);
_tex.LoadRawTextureData(_bytes);
_tex.Apply();
return _tex;
}

这段代码我遇到了两个问题。

首先,几秒钟后我的应用程序卡住并出现错误“无法获取相机图像,状态错误资源耗尽”。

第二个问题是,如果我设法显示图像,它不是彩色的,并且像这篇文章一样重复四次 ARCore for Unity save camera image .

有没有人有访问彩色 ARCore 图像的工作示例或知道我的代码有什么问题?

最佳答案

使用“Frame.CameraImage.AcquireCameraImageBytes();”您将获得 YUV-420-888 格式的灰度图像 (see doc)因此,通过正确的 YUV 到 RGB 转换,您应该获得彩色相机图像。 (但我还没有找到正确的 YUV 到 RGB 转换)我有一个类似的问题:ARCore Save Camera Image (Unity C#) on Button click在我更新的问题中,我发布了从 AcquireCameraImagesBytes() 获取灰度图像的代码。

如果你想做图像处理,你是否已经看过 Unity Computer Vision Example.例子?查看_OnImageAvailable使用 TextureReader API,您可以获得彩色图像。此 github 问题也可能有帮助:https://github.com/google-ar/arcore-unity-sdk/issues/221

关于android - 如何获得彩色的 ARCore AcquireCameraImageBytes()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50879047/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com