WebCamTexture iOS模糊快照

时间:2014-06-09 21:16:14

标签: ios unity3d textures webcam

我目前正在使用WebCamTexture类来显示实时摄像头,直到用户拍摄快照,然后我在我的应用中将所述快照用作纹理。

这是我目前正在使用的代码:

private WebCamTexture cameraTexture;
private Texture2D snapshot;
public UITexture webCamTexture;

snapshot = new Texture2D(cameraTexture.width, cameraTexture.height);
snapshot.SetPixels(m_CameraTexture.GetPixels());
snapshot.Apply();
webCamTexture.mainTexture = snapshot;

注意:UITexture类来自NGUI,它只是在场景中显示纹理。

在Android设备上,似乎没有问题。但是,当我在iOS设备上使用它(在iPad2和iPad3上测试)时,纹理立即变为 我设置时模糊不清。这是一个焦点问题吗?

我尝试了几件事,主要是在拍摄之前等待帧的结束并在获取像素之前调用cameraTexture.Pause(), 无济于事。

为什么iOS纹理变得模糊?

2 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,但在Texture2D构造函数中将mipmaps设置为false似乎为我解决了这个问题

即:

snapshot = new Texture2D(webcamTexture.width, webcamTexture.height, TextureFormat.ARGB32, false);

不幸的是,我没有解释为什么它会起作用。

答案 1 :(得分:1)

我相信,因为Android可以解决与拍摄图像相关的问题。使用从摄像机捕获时初始化WebCamTexture就好像它正在录制视频一样,当您录制视频时,您无法使用焦点和防抖以及ISO设置。当您在iOS上拍照时,您实际上只是抓住此Feed中的帧,这不是真正用于清晰照片的。插件 CameraCaptureKit https://www.assetstore.unity3d.com/en/#!/content/56673)扩展了WebCamTexture并通过使用两个流来解决这个问题,一个用于捕获预览,同时等待用户捕获静止图像,然后是另一个高rez。一个用于实际拍摄照片。考虑通过将一些新的objc代码集成为iOS插件或使用像Camera Capture Kit这样的东西来帮助解决您的问题来实现相同的功能。