1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > Unity如何调用安卓手机摄像头实现拍照和录像

Unity如何调用安卓手机摄像头实现拍照和录像

时间:2020-01-20 08:20:39

相关推荐

Unity如何调用安卓手机摄像头实现拍照和录像

1,要想调用摄像头首先要打开摄像头驱动,如果用户允许则可以使用。

2,定义WebCamTexture的变量用于捕获单张照片。

3,连续捕获须启用线程。

脚本绑定到MainCamer

实现代码如下:

usingUnityEngine;usingSystem.Collections;usingSystem.IO;usingSystem.Runtime.Serialization;usingSystem.Runtime.Serialization.Formatters.Binary;usingSystem.Threading;publicclasstakePhoto:MonoBehaviour{publicstringdeviceName;//接收返回的图片数据WebCamTexturetex;voidOnGUI(){if(GUI.Button(newRect(10,20,100,40),"开启摄像头")){//调用摄像头StartCoroutine(start());}if(GUI.Button(newRect(10,70,100,40),"捕获照片")){//捕获照片tex.Pause();StartCoroutine(getTexture());}if(GUI.Button(newRect(10,120,100,40),"再次捕获")){//重新开始tex.Play();}if(GUI.Button(newRect(120,20,80,40),"录像")){//录像StartCoroutine(SeriousPhotoes());}if(GUI.Button(newRect(10,170,100,40),"停止")){//停止捕获镜头tex.Stop();StopAllCoroutines();}if(tex!=null){//捕获截图大小—距X左屏距离|距Y上屏距离GUI.DrawTexture(newRect(Screen.width/2-150,Screen.height/2-190,280,200),tex);}}///<summary>///捕获窗口位置///</summary>publicIEnumeratorstart(){yieldreturnApplication.RequestUserAuthorization(UserAuthorization.WebCam);if(Application.HasUserAuthorization(UserAuthorization.WebCam)){WebCamDevice[]devices=WebCamTexture.devices;deviceName=devices[0].name;tex=newWebCamTexture(deviceName,300,300,12);tex.Play();}}///<summary>///获取截图///</summary>///<returns>Thetexture.</returns>publicIEnumeratorgetTexture(){yieldreturnnewWaitForEndOfFrame();Texture2Dt=newTexture2D(400,300);t.ReadPixels(newRect(Screen.width/2-200,Screen.height/2-50,360,300),0,0,false);//距X左的距离距Y屏上的距离//t.ReadPixels(newRect(220,180,200,180),0,0,false);t.Apply();byte[]byt=t.EncodeToPNG();File.WriteAllBytes(Application.dataPath+"/Photoes/"+Time.time+".jpg",byt);tex.Play();}///<summary>///连续捕获照片///</summary>///<returns>Thephotoes.</returns>publicIEnumeratorSeriousPhotoes(){while(true){yieldreturnnewWaitForEndOfFrame();Texture2Dt=newTexture2D(400,300,TextureFormat.RGB24,true);t.ReadPixels(newRect(Screen.width/2-180,Screen.height/2-50,360,300),0,0,false);t.Apply();print(t);byte[]byt=t.EncodeToPNG();File.WriteAllBytes(Application.dataPath+"/MulPhotoes/"+Time.time.ToString().Split('.')[0]+"_"+Time.time.ToString().Split('.')[1]+".png",byt);Thread.Sleep(300);}}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。