zoukankan      html  css  js  c++  java
  • 【Unity/Kinect】显示Kinect摄像头内容,屏幕显示环境背景及人体投影

    最近学习用Unity做些体感小游戏,使用Kinect的Unity插件,结合一些官方Demo学习(网上资源用Unity做的较少,蛋疼)。插件及其Demo就在Unity商店里搜Kinect即可找到,其中下图这个包里面包含了大量实用场景和局部功能的Demo,绝对是入门神器!
    这里写图片描述

    非常感谢下面这位大大的无私奉献!

    http://www.manew.com/thread-50097-1-1.html

    需求:屏幕中显示房间环境作为背景,显示人物的投影图像(彩色或者单色)。
    做法:从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案例。
  • 相关阅读:
    [Luogu] 借教室
    [Luogu] 子共七
    [Luogu] 让我们异或吧
    【bzoj1030】[JSOI2007]文本生成器
    HDU3068 最长回文
    【bzoj2342】[Shoi2011]双倍回文
    【NOIP2012】借教室
    HDU2203 亲和串
    【POJ2001】Shortest Prefixes
    vodevs3031 最富有的人
  • 原文地址:https://www.cnblogs.com/guxin/p/unity-kinect-example.html
Copyright © 2011-2022 走看看