基于WebCamTexture

WebCamTexutre可以支持采集卡、网络摄像头和移动端(手机、平板)设备摄像头的捕获一般代码会如下写:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class WebCamManager : MonoBehaviour
{string deviceName;WebCamTexture webCam;// Use this for initializationvoid Start () {WebCamDevice[] devices = WebCamTexture.devices;deviceName = devices[0].name;webCam = new WebCamTexture(deviceName, 1920, 1080, 30);//设置宽、高和帧率   this.GetComponent<RawImage>().texture = webCam;//渲染脚本所在有RawImage组件的物体webCam.Play();}
}

关于这个类

WebCamDevice这个类,值得关注的除了它的length,还有devices[0].availableResolutions:这个设备支持的所有分辨率,其他比如kind镜头模式,是否前置摄像头,是否支持自动对焦,用的不大多,而且都是只可以get不可以set的。

关于对焦

有的时候,我们使用摄像头的画面去进行拍照拍摄,并不希望镜头自动对焦,因为一个人入画后,在自动对焦模式下,镜头的焦距就有可能会调整,造成在一段时间内的模糊。如果需要针对设置对焦模式,比如无限远,或者手动。要么使用摄像头自带的驱动软件去调整,要么使用第三方插件。比如EasyAR、Vofuria的CameDevice类的SetFocusMode。一般可以设置如下几种:

0:normal 常规默认对焦方式

1:trigger 点击触发对焦

2:continous 持续自动对焦

3:infinity 焦距无穷远

4:macro 微距

关于摄像头许可

常能查到的Unity调用外部摄像头的代码,都会去使用以下代码去判断是否设备给予了访问摄像头的权限:

    IEnumerator Start(){yield return Application.RequestUserAuthorization(UserAuthorization.WebCam);if (Application.HasUserAuthorization(UserAuthorization.WebCam)){//巴拉巴拉}}

但其实我尝试之后发现,发布到移动端,选择了允许访问摄像头权限之后,摄像头画面并不会出现,我找了Unity的API说明如下:

所以Application.HasUserAuthorization函数只能用来在web player应用上判断是否有权限。

那么应该怎么去实现对获取摄像头权限对判断呢?我目前是用WebCamTexture的变量、是否获取到摄像头设备来做判断,如下:

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class webcamins : MonoBehaviour
{public RawImage rawImage;private string deviceName;WebCamTexture tex = null;void Update(){if(tex == null){WebCamDevice[] devices = WebCamTexture.devices;if (devices.Length == 0) return;deviceName = devices[0].name;tex = new WebCamTexture(deviceName, 1280, 800, 30);rawImage.texture = tex;tex.Play();}}
}

基于Avpro Live Camera插件

这款插件不是一般的厉害,但也不是一般的贵。

厉害在于它可以帮助你设置亮度、对比度、色相、饱和度、锐度、gamma(层次?),白平衡、曝光补偿。

它可以基于camera,基于ugui,基于3d物体去渲染。

使用方式

导入插件之后,运行GUIDemo如图:

如果需要新建场景,需要关注的是LiveCamera的AVProLiveCamera脚本,LiveCameraManager的AVProLiveCameraManager脚本,以及如果你需要在ugui上渲染用:AVProLiveCameraUGUIComponent,在3d物体上渲染用:AVProLiveCameraMeshApply。

运行起来以后,会在AVProLiveCamera脚本看到上文说的拍摄参数:


待开发

在当下,手机自身的拍照功能已经非常强大,除非对微距、长焦、大光圈造虚化有很高的要求,否则手机是能满足业务需求。尤其让我们想要得到的,是手机自身拍照App的美颜、美化成果。以上的技术方式都无法得到手机App的效果,所以我想这块核心价值是做在了手机的软件层,而不是也许dsp芯片这一层,如果厂商不开放API,原生开发无法获得,用Unity就更别想了,我记得目前华为开发者联盟里面给到的API,也就是一个慢动作。所以在这一行,如何使用手机自带拍照App的能力去做内容会是一个待开发的题目,而因此结合手机去做拍照的互动应用可能会越来越多。

文章中有错误或者做的不好的地方,欢迎指正。

Unity调用外部摄像头/网络摄像头/手机摄像头相关推荐

  1. 摄像头防水性能测试软件,手机摄像头防水测试/手机摄像头气密性检测方法分享...

    原标题:手机摄像头防水测试/手机摄像头气密性检测方法分享 手机作为通讯消费产品,已成为了人们日常生活的必须品,伴随着光电及科学技术的发展,手机在原有通讯功能的基础上又新增多种功能,例如数码照相.看电视 ...

  2. unity 调用外部相机拍照

    unity 调用外部相机拍照 using System; using System.Collections; using System.Collections.Generic; using Syste ...

  3. Unity调用外部Shell脚本或exe

    有时候项目里需要执行一些shell脚本,来完成诸如文件移动,命令行打包,自己转换文件 格式什么的工作,省去一些手工劳动,然后这时候就需要用shell了. 网上也有一些关于调用方法的文章,这里就说一下我 ...

  4. [实用工具]Unity调用外部EXE或Shell命令

    版权所有,转载须注明出处! 喜欢火影.喜欢Java.喜欢unity3D.喜欢游戏开发的都可以加入 木叶村Q群:379076227 1.开门见山的需求 有的时候,我们想把一些外部命令集成到 unity ...

  5. html调起苹果手机摄像头_html5调取手机摄像头或相册

    html5调用手机摄像头或者相册 由于input的type=file 格式的文件的界面并不是我们所希望的界面,所以在此我隐藏input,自定义样式,这个样式就在中自己定义,这里我就不再定义了 首先 使 ...

  6. unity 调用 海康 网络摄像头 免费下载

    微信号:ITComputerGraph 更多精彩内容,关注公众号<IT木子李> csdn积分规则导致资源下载次数越多,需要的积分越高,本着奉献精神,博主特把所有资源放到微信公众号,欢迎大家 ...

  7. 电脑使用android手机摄像头,电脑怎么使用安卓手机摄像头 电脑使用手机摄像头的方法-电脑教程...

    现在安卓手机基本上都配备了1300w像素,那么这个高的像素是不是只有在手机上拍照的功能呢?答案是否定的,这里教大家物尽其用,来弥补笔记本和usb摄像头的缺点.也就是在电脑上使用安卓手机的摄像头.从而在 ...

  8. camera(9)--手机摄像头技术结构与原理

    科普:手机摄像头技术结构与原理 21世纪初夏普与当时的日本通信运营商J-PHONE发明了夏普 J-SH04,夏普 J-SH04具有拍照功能,2003年4月24日夏普发售了全球首款百万像素手机J-SH5 ...

  9. DroidCam通过网络调用手机摄像头的方法一

    DroidCam通过网络调用手机摄像头的方法一 ​ 使用DroidCam软件之余,对软件网络成像也颇感兴趣,继续写一篇,让大家多了解下使用方法,也多做一下对比.这种连接方式是手机端建立一个服务,然后从 ...

最新文章

  1. 用ajax进行部门的验证,ajax用$.post方式进行用户名校验
  2. 英伟达人工智能和处理器驱动的制药、生命科学合作
  3. 修改Kali Linux终端历史记录大小
  4. OpenUPF 的设备形态与架构设计
  5. 射灯安装方法图解_客厅适合用射灯做基础照明吗?又该如何布灯?
  6. SubSonic3.0.0.4.3源码包与调用Dll
  7. ACM-ICPC 2019 山东省省赛 C Wandering Robot
  8. 限制nginx仅能域名访问,不可用ip访问
  9. dynamic与var
  10. epoll关于ET、LT模式和socket非阻塞模式的几个总结
  11. [面试] 算法 —— 数组(有序二维数组的查找)
  12. 由一道习题看如何设计浮点数
  13. 【运动学】基于matlab GUI模拟鱼类目标追击问题【含Matlab源码 166期】
  14. 爱国者(aigo)U391 128G 固态U盘制作PE启动盘
  15. 服务器管理口IP及账号密码(知识汇总)
  16. 数据防泄密软件可以解决哪些安全问题?
  17. PL SQL中如何去掉字符串中重复的字符
  18. 定义一个数组并输出-Java
  19. 【职场】关于跳槽涨薪30%?
  20. 第28节 防火墙基本知识、工作原理及工作模式

热门文章

  1. 青龙脚本(高佣联盟,附脚本)(已废)
  2. vue3之 element-plus的循环图标
  3. 【openOcd学习】
  4. 基于MT5的沪深股票回测三 自动化加载历史数据
  5. table中的字典翻译
  6. 树莓派查看硬盘空间使用
  7. 程序化发送消息或通知到微信群
  8. vue element el-upload 上传文档、压缩包表格
  9. EFM32智能门锁应用案例
  10. 完美解决anaconda环境中安装cartographer的各种问题