Unity调用外部摄像头/网络摄像头/手机摄像头
基于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调用外部摄像头/网络摄像头/手机摄像头相关推荐
- 摄像头防水性能测试软件,手机摄像头防水测试/手机摄像头气密性检测方法分享...
原标题:手机摄像头防水测试/手机摄像头气密性检测方法分享 手机作为通讯消费产品,已成为了人们日常生活的必须品,伴随着光电及科学技术的发展,手机在原有通讯功能的基础上又新增多种功能,例如数码照相.看电视 ...
- unity 调用外部相机拍照
unity 调用外部相机拍照 using System; using System.Collections; using System.Collections.Generic; using Syste ...
- Unity调用外部Shell脚本或exe
有时候项目里需要执行一些shell脚本,来完成诸如文件移动,命令行打包,自己转换文件 格式什么的工作,省去一些手工劳动,然后这时候就需要用shell了. 网上也有一些关于调用方法的文章,这里就说一下我 ...
- [实用工具]Unity调用外部EXE或Shell命令
版权所有,转载须注明出处! 喜欢火影.喜欢Java.喜欢unity3D.喜欢游戏开发的都可以加入 木叶村Q群:379076227 1.开门见山的需求 有的时候,我们想把一些外部命令集成到 unity ...
- html调起苹果手机摄像头_html5调取手机摄像头或相册
html5调用手机摄像头或者相册 由于input的type=file 格式的文件的界面并不是我们所希望的界面,所以在此我隐藏input,自定义样式,这个样式就在中自己定义,这里我就不再定义了 首先 使 ...
- unity 调用 海康 网络摄像头 免费下载
微信号:ITComputerGraph 更多精彩内容,关注公众号<IT木子李> csdn积分规则导致资源下载次数越多,需要的积分越高,本着奉献精神,博主特把所有资源放到微信公众号,欢迎大家 ...
- 电脑使用android手机摄像头,电脑怎么使用安卓手机摄像头 电脑使用手机摄像头的方法-电脑教程...
现在安卓手机基本上都配备了1300w像素,那么这个高的像素是不是只有在手机上拍照的功能呢?答案是否定的,这里教大家物尽其用,来弥补笔记本和usb摄像头的缺点.也就是在电脑上使用安卓手机的摄像头.从而在 ...
- camera(9)--手机摄像头技术结构与原理
科普:手机摄像头技术结构与原理 21世纪初夏普与当时的日本通信运营商J-PHONE发明了夏普 J-SH04,夏普 J-SH04具有拍照功能,2003年4月24日夏普发售了全球首款百万像素手机J-SH5 ...
- DroidCam通过网络调用手机摄像头的方法一
DroidCam通过网络调用手机摄像头的方法一 使用DroidCam软件之余,对软件网络成像也颇感兴趣,继续写一篇,让大家多了解下使用方法,也多做一下对比.这种连接方式是手机端建立一个服务,然后从 ...
最新文章
- 用ajax进行部门的验证,ajax用$.post方式进行用户名校验
- 英伟达人工智能和处理器驱动的制药、生命科学合作
- 修改Kali Linux终端历史记录大小
- OpenUPF 的设备形态与架构设计
- 射灯安装方法图解_客厅适合用射灯做基础照明吗?又该如何布灯?
- SubSonic3.0.0.4.3源码包与调用Dll
- ACM-ICPC 2019 山东省省赛 C Wandering Robot
- 限制nginx仅能域名访问,不可用ip访问
- dynamic与var
- epoll关于ET、LT模式和socket非阻塞模式的几个总结
- [面试] 算法 —— 数组(有序二维数组的查找)
- 由一道习题看如何设计浮点数
- 【运动学】基于matlab GUI模拟鱼类目标追击问题【含Matlab源码 166期】
- 爱国者(aigo)U391 128G 固态U盘制作PE启动盘
- 服务器管理口IP及账号密码(知识汇总)
- 数据防泄密软件可以解决哪些安全问题?
- PL SQL中如何去掉字符串中重复的字符
- 定义一个数组并输出-Java
- 【职场】关于跳槽涨薪30%?
- 第28节 防火墙基本知识、工作原理及工作模式