标签:style blog http color io os 使用 ar for
在做体感操作检测的时候, 常常会用到很多阀值, 比如移动了多少距离, 距离某个部位多么远等等
但是对于不同的人来说, 这些值通常是不一样的. 像胳膊长的人跟胳膊短的人在手的移动范围上也是有比较大的差异的
如果想做到比较好的适应性, 就需要针对不同体形(身高)的人做适配, 所以就有了使用Kinect估算身高的想法
先看看Kinect2的API都提供了哪些数据:
Version 1 | Version 2 | |
---|---|---|
Depth range | 0.4m → 4.0m | 0.4m → 4.5m |
Color stream | 640×480 | 1920×1080 |
Depth stream | 320×240 | 512×424 |
Infrared stream | None | 512×424 |
Audio stream | 4-mic array | 4-mic array |
USB | 2.0 | 3.0 |
XMVECTOR headP = XMVectorSet(head.X, head.Y, (head.Z - 0.4f) / 4.1f, 1.0f); XMVECTOR footP = XMVectorSet(foot.X, foot.Y, (foot.Z - 0.4f) / 4.1f, 1.0f);那把投影空间的坐标转换成相机空间的坐标就很简单了, 直接乘上Projection的逆矩阵即可
XMMATRIX project = XMMatrixPerspectiveFovRH(60.0f / 180.0f * XM_PI, 1.0f, 0.4f, 4.5f); XMMATRIX inverse = XMMatrixInverse(nullptr, project);转换成以米为单位后的坐标后, 身高数据就很空间计算了:
XMVECTOR headW = XMVector3Transform(headP, inverse); XMVECTOR footW = XMVector3Transform(footP, inverse); XMVECTOR height = XMVector3Length(XMVectorSubtract(headW, footW));
标签:style blog http color io os 使用 ar for
原文地址:http://blog.csdn.net/xoyojank/article/details/39228281