zoukankan      html  css  js  c++  java
  • Unity3D中调用外接摄像头,并保存为图片文件

    http://bbs.9ria.com/thread-170539-1-1.html

    项目要求调用摄像头,并且把图像保存下来,上传到服务器。 

    这里有几个难点,调用摄像头是很简单的,unity已经提供好了接口,我们只需要调用就行。

    问题就是怎么把图片保存下来。我们来看下代码。

    public string deviceName;
    WebCamTexture tex;//接收返回的图片数据
    /// <summary>
    /// 实现IEnumerator接口,这里使用了一个协程,相当于多线程。
    /// 这里是调用摄像头的方法。
    /// </summary>
    /// <returns></returns>
    IEnumerator test()
    {
    yield return Application.RequestUserAuthorization(UserAuthorization.WebCam);//授权
    if (Application.HasUserAuthorization(UserAuthorization.WebCam))
    {
    WebCamDevice[] devices = WebCamTexture.devices;
    deviceName = devices[0].name;
    //设置摄像机摄像的区域
    tex = new WebCamTexture(deviceName, 400, 300, 12);
    tex.Play();//开始摄像
    }
    }


    这段代码就是Unity调用摄像头的方法,图片数据就保存在tex中。 
    下面看这段怎么使用上面的那段代码。




       
    void OnGUI()
    {
    //开始按钮
    if (GUI.Button(new Rect(0, 0, 100, 100), "click"))
    {
    //调用启动那个协程,开启摄像头
    StartCoroutine(test());
    }
    //暂停
    if(GUI.Button(new Rect(0,200,100,30),"pause"))
    {
    tex.Pause();
    //这个方法就是保存图片
    StartCoroutine(getTexture2d());
    }
    
    //重启开始
    if (GUI.Button(new Rect(0, 300, 100, 30), "restart"))
    {
    tex.Play();
    }
    if (GUI.Button(new Rect(100, 0, 100, 30), "摄像"))
    {
    //开始摄像,摄像就是一系列的图片集合
    StartCoroutine(getTexture2dshexiang());
    }
    if(tex!=null)
    GUI.DrawTexture(new Rect(200, 200, 200, 180), tex);
    }



    保存图片是一个难点,找了半天,才发现这个方法来实现   


    /// <summary>
    /// 获取摄像头截取的图片,这里也是一个协程
    /// </summary>
    /// <returns></returns>
    IEnumerator getTexture2d()
    {
    yield return new WaitForEndOfFrame();
    Texture2D t = new Texture2D(200, 180);//要保存图片的大小
    //截取的区域
    t.ReadPixels(new Rect(200, 320, 200, 180), 0, 0, false);
    t.Apply();
    //把图片数据转换为byte数组
    byte[] byt = t.EncodeToPNG();
    //然后保存为图片
    File.WriteAllBytes(Application.dataPath + "/shexiang/" + Time.time + ".jpg", byt);
    }




    保存文件的路径需要自己来设置,要保存的区域大家自己可以来调。
  • 相关阅读:
    【小白学PyTorch】1 搭建一个超简单的网络
    【小白学PyTorch】2 浅谈训练集和测试集
    【小白学AI】GBDT梯度提升详解
    【小白学AI】XGBoost推导详解与牛顿法
    【小白写论文】技术性论文结构剖析
    小白学PyTorch 动态图与静态图的浅显理解
    【小白学推荐1】 协同过滤 零基础到入门
    【小白学AI】随机森林 全解 (从bagging到variance)
    OpenCV开发笔记(七十二):红胖子8分钟带你使用opencv+dnn+tensorFlow识别物体
    【python刷题】二叉搜索树-相关题目
  • 原文地址:https://www.cnblogs.com/nafio/p/9137308.html
Copyright © 2011-2022 走看看