Vuforia - 从相机设备裁剪图像/ Texture2D

时间:2018-06-19 10:26:58

标签: vuforia texture2d

我对该功能有一些疑问: 第一: 我想从没有任何虚拟对象的物理相机中获取视频。 我使用代码:

Vuforia.Image resultImg = CameraDevice.Instance.GetCameraImage(mPixelFormat);

此方法将返回一个Vuforia.Image,resultImg提供一个名为CopyToTexture的方法,它会导致屏幕冻结一段时间(用户将看到不连贯)。

另一种方法无法获得可读的texture2D:

VuforiaRenderer.Instance.VideoBackgroudTexture;

第二:    如何通过rect裁剪texture2d?或者如何在物理相机捕获的图片中获得500 * 500像素或texture2d(不是全屏)。

这两个问题已经折磨了我2个星期,而且很少有文件可以参考,谢谢你给我一些建议。

1 个答案:

答案 0 :(得分:0)

对于第一个问题,您可以使用下面的代码

    RenderTexture rt = new RenderTexture(resWidth, resHeight, 24);
    GetComponent<Camera>().targetTexture = rt;
    Texture2D screenShot = new Texture2D(resWidth, resHeight, TextureFormat.RGB24, false);
    GetComponent<Camera>().Render();
    RenderTexture.active = rt;
    screenShot.ReadPixels(new Rect(0, 0, resWidth, resHeight), 0, 0);
    GetComponent<Camera>().targetTexture = null;
    RenderTexture.active = null;
    Destroy(rt);

此代码使您可以从相机中截取屏幕截图并将其存储在Texture2D screenShot 中。这不会导致屏幕冻结,并且texture2D完全可读。

我没有第二个问题的答案,但是我想您应该在将图像转换为Texture2D之前对其进行裁剪。