【Unity/Kinect】显示Kinect摄像头内容,屏幕显示环境背景及人体投影
环境 显示 内容 Unity 背景 摄像头 投影 人体
2023-09-11 14:22:26 时间
最近学习用Unity做些体感小游戏,使用Kinect的Unity插件,结合一些官方Demo学习(网上资源用Unity做的较少,蛋疼)。插件及其Demo就在Unity商店里搜Kinect即可找到,其中下图这个包里面包含了大量实用场景和局部功能的Demo,绝对是入门神器!
非常感谢下面这位大大的无私奉献!
需求:屏幕中显示房间环境作为背景,显示人物的投影图像(彩色或者单色)。
做法:从Kinect设备读取数据,然后给UGUI控件显示。
写一个脚本挂到Canvas身上:
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
/// <summary>
/// 从Kinect获取数据。
/// </summary>
public class GetDataFromKinect : MonoBehaviour {
public RawImage image; // 空白图片,用于显示
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
// 判断设备是否初始化完成。最开始的几帧没有完成,所以需要在Update中去每帧检测。
bool isInit = KinectManager.IsKinectInitialized ();
if (isInit) {
if (image.texture == null) {
// 从设备获取彩色数据,需要勾选Compute Color Map。
Texture2D colorMap = KinectManager.Instance.GetUsersClrTex ();
// 从设备获取深度数据,需要勾选Compute User Map。
// Texture2D userMap = KinectManager.Instance.GetUsersLblTex ();
// 把彩色数据设置给控件显示
image.texture = colorMap ;
}
}
}
}
注意点:
- 通过该方式获取到的图片是上下颠倒的,还需要将该图片控件的RectTransform组件里的Scale设为-1。
- 要把图片控件的Position设为x=0.5,y=0.5,否则图像内容在左下角外边。
- 勾选了Compute Color Map则人体投影为彩色图,没有勾选则为单色图。
- 想要调整人影的透明度,需要给该图片控件添加Canvas Group组件,调整Alpha值。
- 更多细节参考Kinect v2 Example资源包中的KinectDemo/OverlayDemo案例。
相关文章
- 试用百度云计算平台Python环境
- Qt-开发环境中的代码中文显示正常,但是运行后是乱码?
- 基于boot2docker部署Docker环境
- 阿里云-workerman 服务器环境配置
- uniapp判断当前环境是ios还是android
- 使用Anaconda管理多个版本的Python环境
- SAP Spartacus 电商云 UI Shipping Method 在单元测试环境下没有显示的问题
- Atitit.png 图片不能显示 php环境下
- 如何在Java代码中使用SAP云平台CloudFoundry环境的环境变量
- django3.0入门教程【一】:创建django和环境搭建
- Jetson nano系统安装和环境部署
- 生产环境部署MongoDB副本集(带keyfile安全认证以及用户权限)
- 事件监听 & 页面滚动(页面滚动到某一位置时显示/隐藏某元素,Vue环境)
- Chapter1 ROS概述与环境搭建
- C++使用技巧(九):ubuntu环境下Eigen线性代数库的简单使用(C++版本的numpy库))
- 【云原生】Hadoop HA on k8s 环境部署
- 【云原生】Presto/Trino on k8s 环境部署