我目前正在使用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纹理变得模糊?
答案 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这样的东西来帮助解决您的问题来实现相同的功能。