我正在嘗試使用Kinect傳感器和SDK來計算用戶頭部的方向,但我無法在Google上找到任何有用的幫助。有人有任何好的示例,教程或類似的東西可以幫助我嗎?Kinect:計算頭部的俯仰,偏航,側傾角度
3
A
回答
2
我認爲輥,我已發現了一個解決方案儘管它是有限的,但它只在Kinect SDK可以檢測到臉部時起作用,因爲我使用的是FaceTrackFrame
對象。
如果有人在Kinect SDK無法檢測到臉部時發現追蹤更多極端角度的解決方案,我會更樂意看到它。
我的解決方案看起來是這樣的:
FaceTrackFrame faceFrame = faceTracker.Track(
kinectSensor.ColorStream.Format, colorPixelData,
kinectSensor.DepthStream.Format, depthPixelData, skeleton);
// Only works if face is detected
if (faceFrame.TrackSuccessful)
{
txtTracked.Content = "TRACKED";
txtRoll.Content = faceFrame.Rotation.Z;
txtPitch.Content = faceFrame.Rotation.X;
txtYaw.Content = faceFrame.Rotation.Y;
}
1
我設法使用圖像中的深度數據手動計算這些值。
首先,你需要得到深度點
private EnumIndexableCollection<FeaturePoint, Vector3DF> depthPoints;
然後,如果你看一下附帶的SDK的FaceTracking觀衆代碼和搜索DrawFaceModel功能。您可以在1st for循環中像這樣提取代碼。
faceModelPts3D.Add(new Point3D(this.depthPoints[i].X + 0.5f, this.depthPoints[i].Y + 0.5f, this.depthPoints[i].Z + 0.5f));
FaceDataPoints.DepthXPointInfo[i] = this.depthPoints[i].X;
FaceDataPoints.DepthYPointInfo[i] = this.depthPoints[i].Y;
FaceDataPoints.DepthZPointInfo[i] = this.depthPoints[i].Z;
然後我把點0和點9放到下面的函數中來獲得Pitch。然後我將點120和116放入以獲得打哈欠角。
public static double FacePitch(double FirstXPos, double FirstYPos, double FirstZPos, double SecXPos, double SecYPos, double SecZPos)
{
double PitchAngle = 0;
double r = 0;
double XDifference, YDifference, ZDifference = 0;
double DifferenceSquared = 0;
XDifference = FirstXPos - SecXPos;//Calculates distance from Points
YDifference = FirstYPos - SecYPos;
ZDifference = FirstZPos - SecZPos;
DifferenceSquared = Math.Pow(XDifference, 2) + Math.Pow(YDifference, 2) + Math.Pow(ZDifference, 2);
r = Math.Sqrt(DifferenceSquared);
PitchAngle = (Math.Acos(ZDifference/r));
PitchAngle = ((PitchAngle * 180/Math.PI) - 90) * -1; //Converts to Degrees as easier to recognise visually
return PitchAngle;
}
對於i放置在再次點0和9,並再次使用上述功能,但我改變
PitchAngle = (Math.Acos(ZDifference/r));
到
RollAngle = Math.Acos(XDifference/r);
相關問題
- 1. 計算兩個未知點之間的俯仰和偏航
- 2. 陀螺儀CMAttitude俯仰,滾轉和偏航角度問題
- 3. 如何從旋轉矩陣計算偏航,俯仰搖擺?
- 4. 如何計算兩個相鄰幀中的俯仰和偏航角差
- 5. 從俯仰角度檢測頭部點頭姿勢
- 6. 確定偏航,俯仰和滾轉
- 7. 限制俯仰,偏航和橫滾
- 8. 從CMRotationMatrix得到俯仰,偏航,滾動
- 9. 在iOS上獲取相對於地理北極的俯仰,俯仰和偏航?
- 10. 來自加速度計和磁力計的俯仰,滾轉和偏航
- 11. 使用四元數來計算iphone的偏航,俯仰和滾轉?
- 12. 如何使用方位角,俯仰角和側傾角值來確定設備是傾斜了還是向下?
- 13. CMAttitude滾動和俯仰計算
- 14. 我如何從角度變換系數找到旋轉角度(俯仰,偏航,滾動)
- 15. 偏航,俯仰和滾轉值的延遲
- 16. iphone - 偏航,俯仰和滾轉的核心運動範圍
- 17. 確定兩個Vector3點之間的偏航和俯仰
- 18. 如何渲染俯仰,滾動和偏航的3D軸?
- 19. 2D ImagePlus物體上的俯仰和偏航
- 20. 的iPad 1陀螺儀:滾轉,俯仰,偏航留零
- 21. MKMapCamera俯仰高度功能
- 22. 使用OpenCV,C++和圖像2D進行頭部姿態估計 - 幾何方法 - 滾動,偏航和俯仰
- 23. 相機俯仰/偏航到方向矢量
- 24. 偏航,俯仰和滾動到vectorDir和vectorUp
- 25. CoreMotion不會給我滾動,俯仰和偏航
- 26. 從滾動,俯仰和偏航值創建CMAttitude旋轉矩陣
- 27. Ray採摘 - 從俯仰和偏航獲取方向
- 28. 使用滾動,俯仰和偏航來翹曲圖像
- 29. 從rotationMatrix中提取偏航,俯仰和滾動
- 30. 如何從3D矢量中獲得偏航,俯仰和滾動
你看方向,同時捕捉站在球員的全部骨架,或者說是玩家坐在靠近Kinect感應器?您可以通過「FaceTracking」函數來獲取此信息(如果玩家靠近),但頭部方向不是常規骨架數據結構的一部分。 –
我更喜歡站立的球員,但如果這是不可能的,那麼我可以坐在靠近傳感器的位置。我知道我可以使用FaceTracking,但問題是,如果用戶例如把頭轉向太多,FaceTracker將失去它的映射。 – smukov
你需要考慮'FaceTracking'函數的擴展,或者編寫自己的函數(儘管可以使用存在的基類)。 「FaceTracking」代碼仍然可以遵循重要點,即使它沒有足夠的渲染面網格。雖然我還沒有用過這個例子,所以我不確定。不幸的是,SDK的「開箱即用」功能沒有您所尋求的值。 –