kinect+Unity 关于Kinect设备是否正确连接 C#版本

kinect+Unity 关于Kinect设备是否正确连接 C#版本

分享一下本人在制作unity+Kinect项目时遇见的一个小问题以及坚决方法

问题描述
当开发的的程序在Kinect设备接入与不接入时,会有不同的功能,如何判断Kinect是否正确接入,本人以前用的方法是
if (KinectManager.Instance.IsInitialized())
后来发现,该方法只要你本地环境配置完毕,返回值都是true.

解决办法
提前获取未Kinect时,调用Kinect相机,获取彩色数据。保存该数据,需要判断Kinect是否正确连接时,只需要再获取一次与此数据进行对比即可。

注意
1.本人使用的Kinect V2版本。
2.保存的空图片的像素点数据为"RGBA(0.804, 0.804, 0.804, 0.804)"
3.如果在程序一开始就进行对比,建议手动加一个延时,否则在程序启动的一瞬间,有概率导致结果不准确

代码

// An highlighted block
 	public bool kinectCamera = true;
 	private Texture2D texture1;
    private const string nullData = "RGBA(0.804, 0.804, 0.804, 0.804)";//空相机内容,勿改!!!!!
    private int num = 0;//不匹配次数,大于五次认为是不匹配;

  private void Awake()
    {
        StartCoroutine("Matching");
    }
	//为避免第一帧检测时发生错误,加0.1秒延时,并检测10次怎加准确性
    IEnumerator Matching()
    {
        int count = 0;
        while (count<10)
        {
            yield return new WaitForSeconds(0.1f);
            //此处须在KinectManager中勾选获取彩色通道数据
            texture1 = KinectManager.Instance.GetUsersClrTex();
            //此处以1920*1080为例,根据实际情况自行修改
            for (int i = 0; i < texture1.width; i += 120)
            {
                for (int j = 0; j < texture1.height; j += 120)
                {
                    if (texture1.GetPixel(i, j).ToString() == nullData)
                    {
                        num++;
                    }
                }
            }
			//尽可能增加准确性,大于5处为空数据时才返回false;
            if (num > 5)
            {
                Debug.Log("匹配,未调用相机");
                kinectCamera = false;
            }
            else
            {
                Debug.Log("不匹配,调用相机");
                kinectCamera = true;
            }

            num = 0;
            count++;
        }
        StopCoroutine("Matching");
    }

分享一下在实际开发过程中遇见的问题,如有错误请指正。

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值