C# 将Tango相机数据保存为图像

C# 将Tango相机数据保存为图像,c#,android,unity3d,google-project-tango,C#,Android,Unity3d,Google Project Tango,我想将Tango摄像机的摄像机数据保存为图像文件。我不知道从哪里开始,我能找到的最接近的问题是: 其他问题和答案看起来已经过时了 这适用于我吗?或者我可以从ItagoCameratexture获取纹理并将其保存为图像文件吗 还有一种方法可以设置Tango相机的帧速率吗?您的脚本应该继承ITangoVideoOverlay并实现OnTangoImageAvailableEventHandler,其中图像作为字节数组(imageBuffer.data)存储在TangoUnityImageData i

我想将Tango摄像机的摄像机数据保存为图像文件。我不知道从哪里开始,我能找到的最接近的问题是:

其他问题和答案看起来已经过时了

这适用于我吗?或者我可以从ItagoCameratexture获取纹理并将其保存为图像文件吗


还有一种方法可以设置Tango相机的帧速率吗?

您的脚本应该继承ITangoVideoOverlay并实现OnTangoImageAvailableEventHandler,其中图像作为字节数组(imageBuffer.data)存储在TangoUnityImageData imageBuffer下。 图像为YUV格式,因此必须将其转换为RGB或其他格式

private void SaveImage(byte[] byteArray, string datetime)
{
    ...
    TextureFormat format = TextureFormat.RGBA32;
    Texture2D x = new Texture2D(1920, 1080, format, false);
    Color32[] argbArray = ColorHelper.YUV_NV21_TO_RGB(byteArray, 1920, 1080);
    x.SetPixels32(argbArray);
    File.WriteAllBytes(PATH + datetime + "_image.jpg", x.EncodeToJPG());
    ...
}

当然,大小不应该硬编码,但这只是正在进行的工作(imageBuffer有宽度和高度的值)。

我这样做对吗?文本框文本永远不会改变,我想确保我确实得到了数据<代码>公共类GetCameraFrame:MonoBehavior,ItagoVideoOverlay{public byte[]数据;public UnityEngine.UI.Text文本框;public void OnTangoImageAvailableEventHandler(Tango.TangoEnums.TangoCameraId cameraId,Tango.TangoUnityImageData imageBuffer){data=imageBuffer.data;textbox.Text=data.ToString();})我弄明白了,忘了在Start()中注册tango应用程序,这个函数是在哪里定义的ColorHelper.YUV_NV21_to_RGB?如果我没记错的话,我用了这个: