启用相机摄影摄像能力 在使用摄像头时,我们必须启用WebCam能力。 1. 在Unity中,打开Player settings,(通过导航,到“编辑>项目设置>播放器”页面访问播放器设置) 2. 展开Windows Store标签页 3. 在"Publishing Settings > Capabilities"部分中,勾选WebCam能力 在同一时刻中只能执行一次相机操作。为了识别当前相机环境处于哪种模式下(拍照还是视频或无场景),你可以通过UnityEngine.VR.WSA.WebCam.Mode来进行检查。
照片捕获 命名空间: UnityEngine.VR.WSA.WebCam 类型: PhotoCapture PhotoCapture类型允许使用相机拍摄静态照片。使用相机拍摄的正常模式如下: 1. 创建PhotoCapture对象 2. 通过使用想要的设置来创建一个CameraParameters对象 3. 调用StartPhotoModeAsync(),开始拍照模式 4. 选取想要的照片拍摄 · (可选项)进一步处理图像 5. 关闭拍照模式并释放资源
使用PhotoCapture的通用设置对于任意拍照方式,开始的前三步都如下: 创建PhotoCapture对象 存储对象,配置拍摄参数并开始拍照模式 最后,需要使用同样的清理代码来关闭相机 完成这些步骤后,你可以挑选使用捕获照片方式。
捕获照片至文件最简单的操作是直接将照片捕获到文件。照片可以被存储为PNG或JPG格式。
如果我们成功开始了拍照模式,就需要拍照并将照片存储到磁盘上。 完成捕获照片到磁盘的操作后,我们需要退出拍照模式并清理对象
捕获文件至Texture2D对象 我们可以把捕获数据保存为Texture2D对象,做法和保存到磁盘类似。步骤如下:
在OnPhotoModeStarted,捕获一帧图像到内存中。 我们需要把得到的结果赋给Texture2D对象,然后清理代码
捕获照片并与原始数据交互为了在内存中操作图像原始数据,需要的步骤和捕获图片到Texture2D类似,不同之处在于,OnCapturedPhotoToMemory()方法里可以获得图像原始数据并操作它们。
在下面的例子中,我们会创建一个List<Color>用来进一步处理或者直接通过SetPixels()方法来应用于Texture2D对象。
捕获视频命名空间: UnityEngine.VR.WSA.WebCam 类型: VideoCapture 捕获视频的用法和捕获照片相似,不同之处在于你必须指定一个帧率(FPS),并且直接存储到磁盘上的视频必须是MP4格式。 下面是具体步骤: 1. 创建VideoCapture对象 2. 使用我们想要的设置来创建一个CameraParameters对象 3. 调用 StartVideoModeAsync()方法开始视频捕获模式 4. 开始录制视频 5. 停止录制视频 6. 停止视频捕获模式并释放相机资源 开始创建VideoCapture对象VideoCapture m_VideoCapture = null 设置参数 配置完成VideoCapture对象,开始录制视频 在开始录制后,你需要通过更新UI或者行为来确保可以停止视频捕获。在这里我们只输出log。 最后我们需要停止视频捕获,可以通过定时器或者其他输入方式来实现。 一旦停止视频捕获,需要及时退出视频捕获模式并释放相机资源。
故障问题解决
· 获取不到分辨率 · 确保你在项目中启用了WebCam能力
· 全息图像无论怎样设置都不能捕获到图片或者视频中
· 未来的更新会支持捕获全息图像
|