我对该功能有一些疑问: 第一: 我想从没有任何虚拟对象的物理相机中获取视频。 我使用代码:
Vuforia.Image resultImg = CameraDevice.Instance.GetCameraImage(mPixelFormat);
此方法将返回一个Vuforia.Image,resultImg提供一个名为CopyToTexture的方法,它会导致屏幕冻结一段时间(用户将看到不连贯)。
另一种方法无法获得可读的texture2D:
VuforiaRenderer.Instance.VideoBackgroudTexture;
第二: 如何通过rect裁剪texture2d?或者如何在物理相机捕获的图片中获得500 * 500像素或texture2d(不是全屏)。
这两个问题已经折磨了我2个星期,而且很少有文件可以参考,谢谢你给我一些建议。
答案 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之前对其进行裁剪。