2021/02/04 插眼更新: 每次需要多识别一个姿势,需要加好多代码,公开bool值给外部调用,这是很不方便的,直接用委托的方式即可,委托绑定的时候最好放在Start()里,不要放在Awake(),完整代码放最后

效果: (右手过肩1秒之后,识别并打印信息)

1. 添加KinectManager.cs 和 KinectGestureManager.cs

2. 添加 Kinect4AzureInterface.cs

3.添加两个自定义的脚本TintGestureListener.cs ,TintGestureDemo.cs

这个是你需要识别的姿势,例如我只要识别右手举过肩,就写1,再在下面选择Raise Right Hand

如果需要识别多个:

在 TintGestureListener.cs 里面照着这个写法 多公开几个方法,让外部调用

/// <summary>
    /// 右手举起过肩并保持至少一秒
    /// </summary>
    private bool RaiseRightHand;
    /// <summary>
    /// Determines whether swipe left is detected.
    /// </summary>
    /// <returns><c>true</c> if swipe left is detected; otherwise, <c>false</c>.</returns>
    public bool IsRaiseRightHand()
    {
        if (RaiseRightHand)
        {
            RaiseRightHand = false;
            return true;
        }
        return false;
    }

再在下面,将对应的bool值设置为true

TintGestureDemo.cs

using UnityEngine;public class TintGestureDemo : MonoBehaviour
{void Update(){if (TintGestureListener.Instance.IsRaiseRightHand()){Debug.Log("右手举起过肩并保持至少一秒");}}
}

TintGestureListener.cs

using com.rfilkov.kinect;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class TintGestureListener : MonoBehaviour, GestureListenerInterface
{[Tooltip("Index of the player, tracked by this component. 0 means the 1st player, 1 - the 2nd one, 2 - the 3rd one, etc.")]public int playerIndex = 0;[Tooltip("List of the gestures to detect.")]public List<GestureType> detectGestures = new List<GestureType>();// 单例public static TintGestureListener Instance;private void Awake(){Instance = this;}/// <summary>/// 右手举起过肩并保持至少一秒/// </summary>private bool RaiseRightHand;/// <summary>/// Determines whether swipe left is detected./// </summary>/// <returns><c>true</c> if swipe left is detected; otherwise, <c>false</c>.</returns>public bool IsRaiseRightHand(){if (RaiseRightHand){RaiseRightHand = false;return true;}return false;}public bool GestureCancelled(ulong userId, int userIndex, GestureType gesture, KinectInterop.JointType joint){return true;}public bool GestureCompleted(ulong userId, int userIndex, GestureType gesture, KinectInterop.JointType joint, Vector3 screenPos){if (userIndex != playerIndex)return false;switch (gesture){case GestureType.None:break;case GestureType.RaiseRightHand:// 识别举起右手RaiseRightHand = true;break;case GestureType.RaiseLeftHand:break;case GestureType.Psi:break;case GestureType.Tpose:break;case GestureType.Stop:break;case GestureType.Wave:break;case GestureType.SwipeLeft:break;case GestureType.SwipeRight:break;case GestureType.SwipeUp:break;case GestureType.SwipeDown:break;case GestureType.ZoomIn:break;case GestureType.ZoomOut:break;case GestureType.Wheel:break;case GestureType.Jump:break;case GestureType.Squat:break;case GestureType.Push:break;case GestureType.Pull:break;case GestureType.ShoulderLeftFront:break;case GestureType.ShoulderRightFront:break;case GestureType.LeanLeft:break;case GestureType.LeanRight:break;case GestureType.LeanForward:break;case GestureType.LeanBack:break;case GestureType.KickLeft:break;case GestureType.KickRight:break;case GestureType.Run:break;case GestureType.RaisedRightHorizontalLeftHand:break;case GestureType.RaisedLeftHorizontalRightHand:break;case GestureType.TouchRightElbow:break;case GestureType.TouchLeftElbow:break;case GestureType.MoveLeft:break;case GestureType.MoveRight:break;case GestureType.Apose:break;case GestureType.UserGesture1:break;case GestureType.UserGesture2:break;case GestureType.UserGesture3:break;case GestureType.UserGesture4:break;case GestureType.UserGesture5:break;case GestureType.UserGesture6:break;case GestureType.UserGesture7:break;case GestureType.UserGesture8:break;case GestureType.UserGesture9:break;case GestureType.UserGesture10:break;default:break;}return true;}public void GestureInProgress(ulong userId, int userIndex, GestureType gesture, float progress, KinectInterop.JointType joint, Vector3 screenPos){}public void UserDetected(ulong userId, int userIndex){if (userIndex == playerIndex){// as an example - detect these user specific gesturesKinectGestureManager gestureManager = KinectManager.Instance.gestureManager;// 识别所有姿势foreach (GestureType gesture in detectGestures){gestureManager.DetectGesture(userId, gesture);}}}public void UserLost(ulong userId, int userIndex){if (userIndex != playerIndex)return;}}

2020/02/04 代码更新:

调用示例:

using com.rfilkov.kinect;
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class TintGestureListener : MonoBehaviour, GestureListenerInterface
{[Tooltip("Index of the player, tracked by this component. 0 means the 1st player, 1 - the 2nd one, 2 - the 3rd one, etc.")]public int playerIndex = 0;[Tooltip("List of the gestures to detect.")]public List<GestureType> detectGestures = new List<GestureType>();// 单例public static TintGestureListener Instance;private void Awake(){Instance = this;}public bool GestureCancelled(ulong userId, int userIndex, GestureType gesture, KinectInterop.JointType joint){return true;}public Action RaiseRightHandAction;public Action RaiseLeftHandAction;public Action SwipeLeftAction;public bool GestureCompleted(ulong userId, int userIndex, GestureType gesture, KinectInterop.JointType joint, Vector3 screenPos){if (userIndex != playerIndex)return false;switch (gesture){case GestureType.None:break;case GestureType.RaiseRightHand:// 识别举起右手RaiseRightHandAction?.Invoke();break;case GestureType.RaiseLeftHand:// 识别举起左手RaiseLeftHandAction?.Invoke();break;case GestureType.Psi:break;case GestureType.Tpose:break;case GestureType.Stop:break;case GestureType.Wave:break;case GestureType.SwipeLeft:SwipeLeftAction?.Invoke();break;case GestureType.SwipeRight:break;case GestureType.SwipeUp:break;case GestureType.SwipeDown:break;case GestureType.ZoomIn:break;case GestureType.ZoomOut:break;case GestureType.Wheel:break;case GestureType.Jump:break;case GestureType.Squat:break;case GestureType.Push:break;case GestureType.Pull:break;case GestureType.ShoulderLeftFront:break;case GestureType.ShoulderRightFront:break;case GestureType.LeanLeft:break;case GestureType.LeanRight:break;case GestureType.LeanForward:break;case GestureType.LeanBack:break;case GestureType.KickLeft:break;case GestureType.KickRight:break;case GestureType.Run:break;case GestureType.RaisedRightHorizontalLeftHand:break;case GestureType.RaisedLeftHorizontalRightHand:break;case GestureType.TouchRightElbow:break;case GestureType.TouchLeftElbow:break;case GestureType.MoveLeft:break;case GestureType.MoveRight:break;case GestureType.Apose:break;case GestureType.UserGesture1:break;case GestureType.UserGesture2:break;case GestureType.UserGesture3:break;case GestureType.UserGesture4:break;case GestureType.UserGesture5:break;case GestureType.UserGesture6:break;case GestureType.UserGesture7:break;case GestureType.UserGesture8:break;case GestureType.UserGesture9:break;case GestureType.UserGesture10:break;default:break;}return true;}public void GestureInProgress(ulong userId, int userIndex, GestureType gesture, float progress, KinectInterop.JointType joint, Vector3 screenPos){}public void UserDetected(ulong userId, int userIndex){if (userIndex == playerIndex){// as an example - detect these user specific gesturesKinectGestureManager gestureManager = KinectManager.Instance.gestureManager;// 识别所有姿势foreach (GestureType gesture in detectGestures){gestureManager.DetectGesture(userId, gesture);}}}public void UserLost(ulong userId, int userIndex){if (userIndex != playerIndex)return;}}

Unity AzureKinect 初识(二) 姿势识别相关推荐

  1. Unity AzureKinect 初识(四) 试衣镜

    找带骨骼绑定的衣服绑定上这两个脚本组件便可以实现,官方示例一堆其他的,其实我觉得只要告诉大家最基本的,剩下的就由大家天马行空便可 注意点  如果需要叠加到画面例如下面那样 1. 你需要得到Color ...

  2. 初识二维码 第二讲 二维码的结构

    初识二维码 第二讲二维码的结构 它分为功能部分与编码部分.功能部分用于定位,与二维码的版本与格式等元数据的存储. 二维码的大小到21*21的格子到177*177的格子.边长数为除4余1.边长数减去17 ...

  3. unity学习笔记-text文本识别html富文本(待改进)

    unity学习笔记 text文本识别html富文本(待改进) 需求 逻辑 实现 xlua的安装 配置到unity 使用 改进优化(待改进) text文本识别html富文本(待改进) 需求 项目里需要将 ...

  4. 基于openpose的用户姿势识别

    基于openpose数据的用户姿势识别 继续上一篇的github项目,继续将他修改成基于openpose数据集的网络结构. 1. 神经网络复习 为了方便读懂神经网络的框架代码和后续的网络按需修改,在这 ...

  5. 在成人影片里做17种姿势识别?大佬在线求助:训练集不够用!

    点击上方"迈微AI研习社",选择"星标★"公众号 重磅干货,第一时间送达 转载自:新智元 后台回复"加群"进入-> CV 微信技术交流 ...

  6. 【计算机视觉40例】案例26:姿势识别

    [导读]本文是专栏<计算机视觉40例简介>的第26个案例<姿势识别>.该专栏简要介绍李立宗主编<计算机视觉40例--从入门到深度学习(OpenCV-Python)> ...

  7. 蓝鸥Unity开发基础二——课时20 接口

    蓝鸥Unity开发基础二--课时20 接口 一.接口 使用interface关键字定义接口 接口定义一组成员单不直接实现它们 二.实现接口 实现接口的任何类都必须实现其所有的成员方法 接口不能直接实例 ...

  8. 初识二维码 第二十讲 二维码解码程序的组件之一 摄像头拍照功能

    初识二维码 第二十讲    二维码解码程序的组件之一 摄像头拍照功能 解码程序的第一个环节是通过摄像头这个硬件,得到二维码的图片. 对摄像头的工作原理来说,简单的描述如下:1是从摄像头得到模拟信号, ...

  9. 初识二维码 第三讲 二维码的编码流程

    初识二维码 第三讲二维码的编码流程 第一步:数据分析 1.1 确定要编码的字符类型 1.2 选择所需要的纠错等级 1.3 选择版本 第二步:数据编码 2.1 字符数据转为位流 2.2 位流分为每8位一 ...

最新文章

  1. 《软件过程改进》练习题
  2. app 名字 android,SiRi App For Android名字特殊符号_九游手机游戏
  3. zookeeper基本原理及适用场景 转:http://blog.chinaunix.net/uid-26748613-id-4536290.html
  4. 【Python数据挖掘课程】六.Numpy、Pandas和Matplotlib包基础知识
  5. kbmmw 5.06.00 beta 发布
  6. 机器学习(三十一)——Linear Discriminant Analysis
  7. 一场高质量的技术盛会怎样炼成?「2019中国大数据技术大会」即将来临,邀您共赴!...
  8. gin context和官方context_[系列文章] Gin框架 - 安装和路由配置
  9. matplotlib.pyplot.savefig(*args, **kwargs)保存图片$close()关闭图片
  10. 虚拟化技术、云计算服务模式、Docker安装
  11. HTML页面多个平行四边形,平行四边形奥数题
  12. isql连接sybase_使用isql连接Sybase ASE数据库的常见错误及处理方式
  13. “美国人工智能倡议”解读
  14. android开发点击部分文字颜色,墨迹天气推Android版 单城数据流量不足0.5k
  15. [JLOI2008]将军
  16. css情景动画,CSS3 白天/黑夜场景轮回动画
  17. [SOA介绍]什么是SOA?
  18. 揭秘 zCloud 3.0丨企业需要怎么样的DBA?
  19. 音视频笔记-视锥细胞和视杆细胞的区别
  20. JAVA 利用FFmpegFrame 获取rstp监控视频流截图

热门文章

  1. java导出excel文件(标题为中文乱码)
  2. HTML中常用标签的英文全称
  3. 神牛闪光灯TT865/V850II 860II Sony热靴口损坏,更换新热靴口
  4. 轻量级的layui框架后台模板
  5. 怎么用j-link+j-flash烧写MM32
  6. VBS脚本学习:遍历XML文档
  7. 亚马逊英国站小风扇UKCA认证办理流程
  8. swiper ie11版本兼容调整
  9. 华为Android10版怎么截屏,华为畅享10e怎么截屏?畅享10e多种屏幕截图方法
  10. 联盟商家入驻三级分销商城系统开发app