Android 如何获取ARCore AcquireCameraImageBytes()的颜色?
这个问题我已经纠缠了好几天了。我正试图在我的项目上做一些图像处理。我已经查看了ARCore提供的计算机视觉示例,但它只显示了如何访问黑白相框。我需要我的图像的颜色。我已经看过了 没有运气 我有一个名为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;
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问题可能会有所帮助: