- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经成功地实现了地板夹平面来测量左脚到地板的距离,这是相当准确的。我遇到的问题是,当我远离相机时(即左脚 Z 轴增加),脚到地板的距离会发生变化(增加)。
注意:地板本身没有倾斜,Kinect 支架也没有倾斜。
我用 Kinect 1 测试了它,得到了相同的结果。当我远离或靠近相机时,拍摄对象的头部高度(Y 轴)的值也会发生变化。相机倾斜或视线无关紧要。 FloorClipPlane方程中的D值在测试过程中显示为常数。
A = bodyFrame.FloorClipPlane.X;
B = bodyFrame.FloorClipPlane.Y;
C = bodyFrame.FloorClipPlane.Z;
D = bodyFrame.FloorClipPlane.W;
distanceLeftFoot = A * leftFootPosX + B * leftFootPosY + C * leftFootPosZ + D;
只是想让你知道,我有深度和颜色之间的坐标映射。不确定这是否与问题有关。
最佳答案
FloorClipPlane 以 hessian 范式表示 - 如解释的那样 in the docs .具体来说,您的 A、B 和 C 值折衷了从相机原点(Kinect 的中心)到地板平面的单位矢量,因此它与地板平面产生垂直相交。 D 是该矢量的大小(从相机原点到地板平面的距离)。
即使您认为地板是平的并且 Kinect 与地面平行,您也会遇到透视变形问题,这意味着 body 位置(在深度空间中测量)会随着您越来越近而改变。
要解决此问题,您需要提供 3D 坐标值和地板平面作为输入,然后它们会返回您想要的结果,即从地板平面到关节的测量距离:
// j is your joint - left foot or any other joint
float x = j.Position.X;
float y = j.Position.Y;
float z = j.Position.Z;
float distance = (Math.Abs((x * floorPlane.X) + (y * floorPlane.Y) + (z * floorPlane.Z) + floorPlane.W))/((float)Math.Sqrt((Math.Pow(floorPlane.X,2)) + (Math.Pow(floorPlane.Y, 2)) + (Math.Pow(floorPlane.Z, 2))));
希望对您有所帮助。在没有看到您具体在做什么的情况下,无法进一步详细说明您从深度到颜色的映射可能会在这里做什么
关于c# - Kinect 2 不一致的 FloorClipPlane 读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33543168/
我已经成功地实现了地板夹平面来测量左脚到地板的距离,这是相当准确的。我遇到的问题是,当我远离相机时(即左脚 Z 轴增加),脚到地板的距离会发生变化(增加)。 注意:地板本身没有倾斜,Kinect 支架
我是一名优秀的程序员,十分优秀!