Unity + Kinect抠像移除背景(三)

1. 挂一个 KinectManager,勾选如下:

Unity + Kinect抠像移除背景(三)_第1张图片

2. RawImage  加个脚本即可

Unity + Kinect抠像移除背景(三)_第2张图片

脚本如下:

using UnityEngine;
using UnityEngine.UI;

public class GetBodyTexture : MonoBehaviour
{
    KinectManager manager;
    public RawImage bodyRaw;
    private Texture2D foregroundTex;
    RectTransform rect;

    void Start()
    {
        manager = KinectManager.Instance;
        if (bodyRaw == null)
        {
            bodyRaw = GetComponent();
        }

        rect = GetComponent();
        // kinect 深度摄像头分辨率 512,424
        rect.sizeDelta = new Vector2(512, 424);
        // 自适应 Game 窗口
        float scaleValue = Camera.main.pixelRect.width / 512;
        rect.localScale = new Vector3(scaleValue, -scaleValue, 1);

    }

    void Update()
    {
        if (manager && manager.IsInitialized())
        {
            foregroundTex = manager.GetUsersLblTex();
            bodyRaw.texture = foregroundTex;
        }
    }
}

结果如下: 

Unity + Kinect抠像移除背景(三)_第3张图片

 

--------------------- 分界线  后面处理图像降噪 -------------------------

 

 

 

---- 分界线 这后面不用看 都是垃圾

1.需要有两个摄像头,在新场景中新建一个camera取名为BackgroundCamera,

Unity + Kinect抠像移除背景(三)_第4张图片

2.主摄像头和BackgroundCamera都添加一个组件GUIlayer,将主摄像头的Depth属性设置为0,BackgroundCamera摄像头的Depth属性设置为-1

Unity + Kinect抠像移除背景(三)_第5张图片    Unity + Kinect抠像移除背景(三)_第6张图片

3.新建一个空物体,取名为BackgroundImage,添加一个组件GUITexture,将所需要的背景图拖进去

Unity + Kinect抠像移除背景(三)_第7张图片

4.新建一个空物体取名为KinectController,添加KinectManagerhe 和 BackgroundRemovalManager这两个脚本组件,这里有特别需要注意的是KinectManager需要注意的是将Compute User Map 属性设置为BodyTexture 并且将Compute Color Map属性勾选,而BackgroundRemovalManager脚本则需要将主摄像头赋值给属性Foreground Camera,这两个脚本的设置如下图所示;

Unity + Kinect抠像移除背景(三)_第8张图片Unity + Kinect抠像移除背景(三)_第9张图片

5.哦几把K,完事让我们运行一下去看看效果

 

Unity + Kinect抠像移除背景(三)_第10张图片

你可能感兴趣的:(Kinect)