【发布时间】:2015-05-26 15:09:03
【问题描述】:
我正在尝试使用 Kinect 计算一个人的身高。这是我计算高度的方法(这段代码不是很复杂,仅用于测试目的):
double h2s = Math.Sqrt(Math.Pow(headX - shoulderCenterX, 2) + Math.Pow(headY - shoulderCenterY, 2)+ Math.Pow(headZ - shoulderCenterZ, 2));
double s2hip = Math.Sqrt(Math.Pow(shoulderCenterX - hipX, 2) + Math.Pow(shoulderCenterY - hipY, 2) + Math.Pow(shoulderCenterZ - hipZ, 2));
double hip2Lhip = Math.Sqrt(Math.Pow(hipX - hipLeftX, 2) + Math.Pow(hipY - hipLeftY, 2) + Math.Pow(hipZ - hipLeftZ, 2));
double Lhip2kneeL = Math.Sqrt(Math.Pow(hipLeftX - kneeLeftX, 2) + Math.Pow(hipLeftY - kneeLeftY, 2) + Math.Pow(hipLeftZ - kneeLeftZ, 2));
double kneeL2ankle = Math.Sqrt(Math.Pow(kneeLeftX - ankleLeftX, 2) + Math.Pow(kneeLeftY - ankleLeftY, 2) + Math.Pow(kneeLeftZ - ankleLeftZ, 2));
double heigth = h2s + s2hip + hip2Lhip + Lhip2kneeL + kneeL2ankle;
vyskatextbox.Text = heigth.ToString();
我没有收到任何错误,但问题是它计算我的身高错误。我得到的数字在 3 到 11 之间,具体取决于我与 Kinect 的距离。有什么问题?数字改变是可以的,还是无论如何都应该保持不变?还有为什么我会得到像 11 (m) 这样的数字?
【问题讨论】:
-
您的各种坐标(headX 等)在...中的单位是什么?
-
@MattiVirkkunen 我没有转换任何东西,这是直接来自 kinect,例如:headX = head.Position.X;所以我想它应该以米为单位。
-
所以您是在猜测但不确定?您甚至阅读过文档吗?
-
@MattiVirkkunen 我在其他论坛上有红色文档和主题,甚至还有来自“SCOPUS”和“Web of Science”等数据库的科学文章。我仍然不确定,因为我认为我的身高不可能达到 11m,你知道 :) 如果你能给我解释为什么我会得到如此奇怪的值,那将是非常好的。谢谢
-
你们为什么要否决我的问题?如果答案对您来说如此幼稚和显而易见,请不要自私并与其他可能没有您那么有经验的人分享。如果不是这种情况,您为什么要否决我的问题,请发表评论,我将尝试改进此问题和将来的问题。谢谢
标签: c# kinect euclidean-distance