Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/208.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何获取ARCore AcquireCameraImageBytes()的颜色?_Android_Unity3d_Computer Vision_Arcore - Fatal编程技术网

Android 如何获取ARCore AcquireCameraImageBytes()的颜色?

Android 如何获取ARCore AcquireCameraImageBytes()的颜色?,android,unity3d,computer-vision,arcore,Android,Unity3d,Computer Vision,Arcore,这个问题我已经纠缠了好几天了。我正试图在我的项目上做一些图像处理。我已经查看了ARCore提供的计算机视觉示例,但它只显示了如何访问黑白相框。我需要我的图像的颜色。我已经看过了 没有运气 我有一个名为GetImage()的函数,它应该将相机帧作为纹理返回 public Texture GetImage() { if (!Frame.CameraImage.AcquireCameraImageBytes().IsAvailable) { return null;

这个问题我已经纠缠了好几天了。我正试图在我的项目上做一些图像处理。我已经查看了ARCore提供的计算机视觉示例,但它只显示了如何访问黑白相框。我需要我的图像的颜色。我已经看过了 没有运气

我有一个名为
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图像的工作示例,或者知道我的代码有什么问题?

使用“Frame.CameraImage.acquiredcameraimagebytes();”可以获得YUV-420-888格式的灰度图像,因此通过正确的YUV到RGB转换,应该可以获得彩色相机图像。(但我还没有找到正确的YUV到RGB转换) 我有一个类似的问题:在我更新的问题中,我发布了从AcquireCameraImagesBytes()获取灰度图像的代码

如果你想做图像处理,你已经看过这个例子了吗?请参阅使用TextureReader API可以获得彩色图像。 此外,github问题可能会有所帮助: