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);
}

保存文件的路径需要自己来设置,要保存的区域大家自己可以来调。

Unity3D中调用外接摄像头,并保存为图片文件的更多相关文章

  1. [转]C#中调用资源管理器(Explorer.exe)打开指定文件夹 + 并选中指定文件 + 调用(系统默认的播放类)软件(如WMP)打开(播放歌曲等)文件

    原文:http://www.crifan.com/csharp_call_explorer_to_open_destinate_folder_and_select_specific_file/ C#中 ...

  2. Android中调用系统所装的软件打开文件(转)

    Android中调用系统所装的软件打开文件(转) 在应用中如何调用系统所装的软件打开一个文件,这是我们经常碰到的问题,下面是我所用到的一种方法,和大家一起分享一下! 这个是打开文件的一个方法: /** ...

  3. Unity 3D调用Windows打开、保存窗口、文件浏览器

    Unity调用Window窗口 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- 心分 ...

  4. Silverlight应用程序中调用WCF Ria Services访问数据库图片

    WCF Ria Services(通常称为RIA服务),专门设计让Silverlight应用程序访问数据库,网上有关其示例应用都是基于简单的数据显示,其中MSDN网站上有详细的解决方案介绍,地址htt ...

  5. docker中,如何将镜像保存为tar文件或者将镜像保存为文件,将tar文件导入到docker中

    需求说明: 在实际使用docker的过程中,比如某些机器不能上网,恰巧需要某些docker镜像,一般可以采用在能上网的机器上,pull下来基础镜像,然后将docker 镜像保存为文件,在不能上网的机器 ...

  6. Echarts-2.2.7中统计出来的统计图保存为图片

    今天在做一个图形报表,有个需求是要把展现的统计图保存为图片, 图形报表用的Echarts-2.2.7, 以前有用过 Echarts,记得echarts插件是可以帮助我们把统计图保存为图片的. 只是不记 ...

  7. Unity3D WebCamTexture 调用外部摄像头

    http://www.itnose.net/detail/6259004.html 一:Unity 中使用WebCamTexture 调用摄像头实现拍照和摄像. using UnityEngine; ...

  8. 在HTML中调用打开摄像头

    1 <img src="imgs/qr.png" alt=""> 2 <video src=""></vide ...

  9. 在 浏览器中调用外接设备— —手写板 【win10 x64 手动注册ocx控件的方法】

    PPAXSignToolSDK.ocx 浏览器下使用手写板时调用的控件,使用前必须先注册,,不然浏览器下版本无法正常工作. ocx 控件在安装包运行时会自动注册,如果安装包没有注册成功,需要进行手动注 ...

随机推荐

  1. mongodb 安装、启动

    MongoDB 之 你得知道MongoDB是个什么鬼 MongoDB - 1   最近有太多的同学向我提起MongoDB,想要学习MongoDB,还不知道MongoDB到底是什么鬼,或者说,知道是数据 ...

  2. asp.net mvc4 之Webapi之客户端或服务器端安全控制

    一.WebAPI的工作方式 WebAPI的工作方式:HTTP的请求最先是被传递到HOST中的,如果WebAPI是被寄宿在IIS上的,这个HOST就是IIS上,HOST是没有能力也没有必 要进行请求的处 ...

  3. c# vs2010 连接access数据库

    第一次在博客园写博文,由于文采不怎么好,即使是自己很熟悉的东西,写起来也会感觉到不知从何讲起,我想写的多了就好了. 这篇文章主要是介绍怎么用c# 语言 vs2010连接access数据库的,连接字符串 ...

  4. Storage Types and Storage Policies

    https://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-hdfs/ArchivalStorage.html Introduc ...

  5. java之快速排序

    //基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据 ...

  6. Xcode6 新特性

    苹果在WWDC 2014上对新版Xcode(Xcode 6 Beta版)并没有提及过多.但它却是开发人员不能忽视的一部分.Xcode 6 Beta版为设计和创建软件引入了新方法,更加关注功能和一些改善 ...

  7. html body div height: 100%;

    最近做了测试 html{ height: 100%;//全部内容高度,包括滚动出现的内容 background-color:#000;} body{height: 100%;//只一页屏幕,用作滚动的 ...

  8. git多人协作冲突解决方法

    http://www.trinea.cn/dev-tools/git-skill/ http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361 ...

  9. zabbix 中 宏 的介绍

    宏的作用是便于在模板.items.trigger中的引用.宏的名称为 {$名称},宏的字符范围为 A~Z.0~9._ . 例如: 在key中的宏: net.tcp.service[ssh,{$SSH_ ...

  10. android读取apk中已经存在的数据库信息

    在android数据库编程方面,大家有没有遇到过,我要从指定位置的已经存在的数据库来进行操作的问题.之前我尝试了很多方法都没有成功,后来找到了解决的方法.   下面说明下这段代码的意思,第一步先判断在 ...