unity调用摄像头拍照
时间: 2023-10-06 11:07:43 浏览: 159
可以通过 Unity 的 WebCamTexture 类来调用摄像头拍照。以下是一个简单的示例代码:
```
using UnityEngine;
using System.Collections;
public class CameraController : MonoBehaviour
{
private WebCamTexture webcamTexture;
// Start is called before the first frame update
void Start()
{
// 获取摄像头设备
WebCamDevice[] devices = WebCamTexture.devices;
if (devices.Length == 0)
{
Debug.Log("No camera detected!");
return;
}
// 使用第一个摄像头设备
webcamTexture = new WebCamTexture(devices[0].name);
// 开始捕捉摄像头画面
webcamTexture.Play();
}
// 拍照方法
public void TakePhoto()
{
// 创建 Texture2D 对象
Texture2D photo = new Texture2D(webcamTexture.width, webcamTexture.height);
// 从摄像头捕捉画面到 Texture2D 对象
photo.SetPixels(webcamTexture.GetPixels());
photo.Apply();
// 保存照片到本地
byte[] bytes = photo.EncodeToPNG();
System.IO.File.WriteAllBytes(Application.dataPath + "/photo.png", bytes);
}
// 在场景中显示摄像头画面
void OnGUI()
{
if (webcamTexture != null && webcamTexture.isPlaying)
{
GUI.DrawTexture(new Rect(0, 0, Screen.width, Screen.height), webcamTexture, ScaleMode.ScaleToFit);
}
}
// Stop capturing webcam texture when the script is disabled or destroyed
void OnDisable()
{
if (webcamTexture != null)
{
webcamTexture.Stop();
}
}
void OnDestroy()
{
if (webcamTexture != null)
{
webcamTexture.Stop();
}
}
}
```
在 Start() 方法中,我们获取设备上的摄像头设备,并使用第一个设备。然后通过调用 `WebCamTexture.Play()` 方法开始捕捉摄像头画面。
在 TakePhoto() 方法中,我们创建一个 Texture2D 对象,然后从摄像头捕捉画面到 Texture2D 对象中。最后,我们将照片保存到本地。
在 OnGUI() 方法中,我们通过调用 `GUI.DrawTexture()` 方法来显示摄像头画面。
最后,在 OnDisable() 和 OnDestroy() 方法中,我们停止捕捉摄像头画面。
阅读全文