YuYuYouEr工作室针对商业解决方案提供SDK定制服务,另外YuYuYouEr工作室还可以提供针对FLASH/AIR中ANE相关开发服务和咨询。

官方网站:http://www.YuYuYouEr.cn


官方QQ群:322609996

Unity3D插件已更新至2.0.0.8版本;

本版增加与彩色RGB图像对应的平面骨骼节点,方便大家做AR互动类开发;

更换角色骨骼模型,支持背后跟随视角与面对面视角;

增加一代二代SDK切换脚本,详见Assets\YuYuYouEr_Kinect_SDK_Wrapper\Plugins\目录;

继续对Kinect V2硬件设备的支持,封装了Kinect for windows SDK v2.0-1409版本;

并提供与Kinect V1设备完全兼容的DLL插件接口,大家可以根据自己需要随时切换硬件设备,却无需修改你的应用代码;

对于Kinect V1和Kinect V2不同的接口,如二代没有马达接口,开发者调用不会出错,内部实现为空函数;

在Unity3D中使用独立线程更新图像数据,提高主线程帧率

模型骨骼、小点骨骼均支持单用户、两用户

支持Kinect骨骼数据录制与重放,方便开发过程中反复调试特定动作

 

最新社区免费版(如果下载失败,请加QQ群,向群主索要最新版本):

Unity3D插件:
YuYuYouEr_Kinect_SDK_Wrapper_for_Unity3D_v2.0.0.8_Community.zip
百度网盘提取码:42sj

tt_Kinect_Calibration标定工具(下面有截图说明)
tt_Kinect_Calibration标定工具 提取码:p7ek

视频教程:

入门级教程https://v.douyu.com/show/j4xq3WDK5GjMLGNz

内容如下:

1、下载地址

2、如何导入Unity3D

3、如何切换一代、二代硬件驱动

4、运行测试:彩色、深度、背景移除、单人骨骼

5、小游戏开发示例:如来神掌(备注:非常入门级的案例啊,高手不要好奇)


最新为v2.0.0.8版本,拥有以下特性:

Kinect V2插件:

对Kinect for windows SDK v2.0-1409进行封装

支持自定义用户管理器,内置单用户/双用户示例
支持用户进入/离开事件
支持骨骼数据录制/重放,方便骨骼动作算法调试

支持深度图、彩色视频
支持获取图像尺寸接口(注意此处V1、V2会不同,所以不要在自己的代码中写常量)
支持SDK v2.0背景移除接口

支持单人骨骼数据、双人骨骼
支持单人握拳检测、双人握拳检测

支持坐标系转换:骨骼数据 <-> 深度图像 -> 彩色图像

支持Enable开关,运行时暂停某些特性

提供32位、64位两份DLL

Kinect V1插件:

对Kinect for windows SDK v1.8进行封装

支持自定义用户管理器,内置单用户/双用户示例
支持用户进入/离开事件
支持骨骼数据录制/重放,方便骨骼动作算法调试

支持深度图、彩色视频

支持获取图像尺寸接口(注意此处V1、V2会不同,所以不要在自己的代码中写常量)

支持SDK v1.8背景移除接口

支持单人骨骼数据、双人骨骼
支持单人握拳检测、双人握拳检测

支持人脸检测(缩放、位置、旋转)
支持语音识别
支持坐标系转换:骨骼数据 <-> 深度图像 -> 彩色图像

支持Enable开关,运行时暂停某些特性

支持Kinect马达调整仰视、俯视角度

提供32位、64位两份DLL

Unity3D版本中DLL函数声明,请看KinectInterop.cs中NativeMethos定义,本文下方有详细的函数说明

这份Wrapper代码会长期维护,并不断增加新特性,将来也会提供对其他体感硬件、体感平台的支持。


运行界面截图:


功能说明:

提供Unity3D插件(移植自CMU Kinect Wrapper,修复bug,重构代码,增加特性)

Kinect V1 DLL对Kinect for windows SDK v1.8进行封装

Kinect V2 DLL对KInect for windows SDK v2.0-1409进行封装

支持v1.8版本、v2.0版本背景移除接口

支持深度图、彩色视频、单人骨骼数据、双人骨骼数据

支持自定义用户管理器,内置单用户/双用户示例

支持用户进入/离开事件

支持骨骼数据录制/重放,方便骨骼动作算法调试

支持获取图像尺寸,V1、V2深度图、彩色视频尺寸不同

支持Kinect Interaction握拳手势

提供32位、64位两份DLL

 

Kinect V1 DLL支持人脸识别接口

Kinect V1 DLL支持语音识别

Kinect V1 DLL支持马达调整仰视、俯视角度

社区免费版本在启动Kinect时会在屏幕右下角显示带有此Wrapper版本号的信息窗口,持续5秒后会自动消失。

DLL调用方法:

YuYuYouEr_Kinect_SDK_Wrapper.h:此头文件封装一个DLL调用辅助类,完成DLL加载,DLL函数获取,调用封装功能。

定义方法:

CYuYuYouEr_Kinect_SDK_Wrapper           m_YuYuYouEr_Kinect_SDK_Wrapper;

Kinect V2运行所需文件:

YuYuYouEr_Kinect_SDK_Wrapper.dll:运行必须;
qfOpenCV.dll:运行必须;

Kinect V1运行所需文件:

YuYuYouEr_Kinect_SDK_Wrapper.dll:运行必须;

FaceTrackData.dll:运行必须;
FaceTrackLib.dll:运行必须;

KinectBackgroundRemoval180_32.dll:运行必须;

KinectInteraction180_32.dll:运行必须;

SpeechRecognition-en_US.grxml:使用英文语音识别时必须存在

SpeechRecognition-zh_CN.grxml:使用中文语音识别时必须存在

Wrapper函数返回值:

封装后的函数返回值均为HRESULT类型,成功则返回S_OK;

骨骼数据关节坐标类型:

typedef struct { float x, y, z, w;}Vector4;  //点坐标,4维向量

函数列表:

1、Kinect打开/关闭:

HRESULT qfKinectInit(void);  //打开Kinect

HRESULT qfKinectUnInit(void);  //关闭Kinect

2、彩色图像、深度数据、骨骼坐标读取:

HRESULT qfKinectCopyVideoData(BYTE videodata[宽度*高度*4]);  //读取彩色视频数据,调用者分配空间,32位图像

HRESULT qfKinectCopyDepthData(BYTE depthdata[宽度*高度*4]);  //读取深度数据,每个成员为32位DWORD,存放深度值(毫米数),含UserIndex

HRESULT qfKinectCopyBackgroundRemovalData(BYTE data[宽度*高度*4]);  //读取抠像数据,32位图像尺寸与彩色图像相同

HRESULT qfKinectCopySkeletonData(Vector4 skldata[20]);  //读取骨骼数据,关节下标与微软顺序相同,后面会给出

HRESULT qfKinectCopySkeletonAndAction(Vector4 skldata[6][20], int userIndex[6]);  //读取多人骨骼数据,检测userIndex[i]为非0表示此用户有效

3、语音识别打开/关闭/结果读取:

HRESULT qfKinectInitSpeech(int languageCode);  //打开语音识别,需要首先启动Kinect

目前languageCode支持英文(1033)和中文(2052)

HRESULT qfKinectUnInitSpeech(void);  //关闭语音识别

HRESULT qfKinectCopySpeechReslut(BYTE depthdata[1024]);  //读取语音识别结果,返回值为UTF8编码,grxml语法文件使用中文<tag>时需要注意,示例中有相应处理函数

4、Kinect Interaction握拳/松开检测:

HRESULT qfKinectCopyHandEventReslut(BYTE handEventData[2]);  //读取双手事件,目前支持握拳、松开检测

handEventData[0]为左手,handEventData[1]为右手;

值为0表示无动作、1表示握拳、2表示松开;

HRESULT qfKinectCopyMultiHandEventReslut(BYTE handEventData[6][2]);  //读取多人双手事件,目前支持握拳、松开检测

用户顺序与copyMultiSkeletonData()函数结果一样,handEventData[i]表示第i个用户双手数据

handEventData[i][0]为第i个用户左手,handEventData[i][1]为第i个用户右手;

值为0表示无动作、1表示握拳、2表示松开;

5、人脸识别接口:

HRESULT qfKinectCopyFaceTrackResult(FLOAT scale[1], FLOAT rotationXYZ[3] , FLOAT translationXYZ[3], LONG translationColorXY[2]);
//得到面部缩放、欧拉角旋转、在骨骼空间的位移、彩色空间的位移

6、坐标系转换:

HRESULT qfKinectTransformSkeletonToDepthImage(FLOAT positionXYZW[4], int *plDepthX, int *plDepthY, USHORT *pusDepthValue);  //骨骼数据 -> 深度图像

HRESULT qfKinectTransformDepthImageToSkeleton(FLOAT positionXYZW[4], int lDepthX, int lDepthY, USHORT usDepthValue);  //深度图像 -> 骨骼数据

HRESULT qfKinectTransformDepthImageToVideoImage(int lDepthX, int lDepthY, USHORT usDepthValue , int *plColorX, int *plColorY);  //深度图像 -> 彩色图像

在例程中,深度图像、彩色图像中用户身上的小白点位置即为以上函数计算得到。

7、特性开关

//多用户骨骼数据开关,单用户应用关闭此项可提高效率
bool qfKinectGetEnableMultiUser();
void qfKinectSetEnableMultiUser(bool bEnable);

//人脸识别检测开关
bool qfKinectGetEnableFaceTracking();
void qfKinectSetEnableFaceTracking(bool bEnable);

//语音识别检测开关
bool qfKinectGetEnableSpeechRecognition();
void qfKinectSetEnableSpeechRecognition(bool bEnable);

//握拳识别检测开关
bool qfKinectGetEnableKinectInteractive();
void qfKinectSetEnableKinectInteractive(bool bEnable);

//背景移除特性开关
bool qfKinectGetEnableBackgroundRemoval();
void qfKinectSetEnableBackgroundRemoval(bool bEnable);

8、马达控制

//控制马达,调整kinect仰角、俯角,微软建议调整频率不要太高,至少1s间隔
//角度有效范围:-27度 ~ +27度
int getElevationAngle();
bool setElevationAngle(int angle);

Test软件简介:

YuYuYouEr_Kinect_SDK_Wrapper_Test为DLL接口测试软件。

主界面使用对话框形式,点击启动Kinect按钮,可以看到彩色图像、深度图像,如果有用户被Kinect追踪到,还会显示单人、双人骨骼图像。

被识别用户可以进行握拳测试,可以看到代表左右手的绿色圆点变大。

Kinect启动后,可以启动语音识别,可以选择中文或者英文。

界面右下角有垂直滑动条可以调整Kinect仰角、俯角。

Kinect关节序号:

NUI_SKELETON_POSITION_HIP_CENTER                        = 0
NUI_SKELETON_POSITION_SPINE                                       =1
NUI_SKELETON_POSITION_SHOULDER_CENTER         = 2
NUI_SKELETON_POSITION_HEAD                                        = 3

NUI_SKELETON_POSITION_SHOULDER_LEFT                = 4
NUI_SKELETON_POSITION_ELBOW_LEFT                         = 5
NUI_SKELETON_POSITION_WRIST_LEFT                          = 6
NUI_SKELETON_POSITION_HAND_LEFT                           = 7

NUI_SKELETON_POSITION_SHOULDER_RIGHT             = 8
NUI_SKELETON_POSITION_ELBOW_RIGHT                     = 9
NUI_SKELETON_POSITION_WRIST_RIGHT                      = 10
NUI_SKELETON_POSITION_HAND_RIGHT                       = 11

NUI_SKELETON_POSITION_HIP_LEFT                               = 12
NUI_SKELETON_POSITION_KNEE_LEFT                            = 13
NUI_SKELETON_POSITION_ANKLE_LEFT                        = 14
NUI_SKELETON_POSITION_FOOT_LEFT                            = 15

NUI_SKELETON_POSITION_HIP_RIGHT                            = 16
NUI_SKELETON_POSITION_KNEE_RIGHT                         = 17
NUI_SKELETON_POSITION_ANKLE_RIGHT                      = 18
NUI_SKELETON_POSITION_FOOT_RIGHT                          = 19

发布历史:

2019-07-14
————————-
发布2.0.0.8版本
二代Kinect支持多用户抠像
完善面对面视角与非面对面视角的动作同步;

2017-07-17
————————-
发布tt_Kinect_Calibration标定工具1.0.0.0版本
支持正视图、右视图、顶视图
支持三个调节步长档位
支持缩放视图
支持Yaw、Pitch、Roll欧拉角标定

2016-09-20
————————-
发布2.0.0.6版本
支持6用户管理器
更换角色骨骼模型,支持背后跟随视角与面对面视角;
支持与彩色图像对应的平面骨骼节点,可做AR互动开发
提供一代、二代SDK切换脚本
修改bug

2015-11-22
————————-
发布2.0.0.5版本
支持自定义用户管理器,内置单用户/双用户示例
支持用户进入/离开事件
支持骨骼数据录制/重放,方便骨骼动作算法调试

2015-04-13

————————-
发布2.0.0.2版本
修改bug,Kinect V2出现第三个用户时,数组越界
在SkeletonWrapper中,以到(0, 0, 1.9)为中心,保留两个距离最近的用户
作为模型绑定和小点的骨骼的数据源

2015-04-11
————————-
发布2.0.0.1版本
在Unity3D中使用独立线程更新图像数据,提高主线程帧率
模型骨骼、小点骨骼均支持两个用户

2014-10-30
————————-
发布2.0.0.0版本
封装Kinect for windows SDK v2.0-1409版本
在Kinect V2接口中支持彩色、深度、骨骼、握拳、抠像数据获取,以及坐标转换 接口
统一Kinect V2与Kinect V1插件接口
提供动态加载的DLL,解耦和应用代码与Kinect硬件驱动

2014-07-02
————————-
发布0.6版本
修复Unity3D坐标转换传参bug

2014-05-26
————————-
C++ Win32 DLL发布0.5版本
Unity3D版本增加语音识别示例
增加Kinect马达控制接口
发布64位版本DLL
修改了一些CMU代码中的bug

2014-02-24

————————-
C++ Win32 DLL发布0.4版本
Unity3D插件发布0.4版本
封装微软Kinect SDK v1.8版本
支持背景移除接口
支持人脸识别接口

2013-09-05
————————-
C++ Win32 DLL发布0.3版本
支持双人骨骼
支持双人握拳手势
增加坐标系转换函数:骨骼数据 <-> 深度图像 -> 彩色图像

2013-08-02
————————-
发布0.2版本
修复关闭Kinect时可能异常退出bug
发布Unity3D插件版本
提供OpenCV函数用来改变图像大小,水平垂直翻转图像

2013-07-31
————————–
发布0.1版本
支持Kinect SDK v1.7
支持读取骨骼数据、深度数据、彩色图像
支持语音识别
支持Kinect握拳检测