我想開發一個簡單的程序,它使用Kinect for Xbox360來計算一個人的行駛距離。 Kinect將被指向的房間將是10 x 10.在用戶按下按鈕後,對象將在此空間中移動。一旦主體到達他們在該地區的最終目的地,用戶將再次按下按鈕。然後Kinect會輸出兩個按鈕之間的距離。之前從未爲Kinect開發,開始起步非常艱鉅。我的問題是,我不完全確定我應該用什麼來衡量距離。在我的研究中,我已經找到了計算Kinect中物體距離的方法,但僅此而已。使用Kinect來計算行駛的距離
0
A
回答
0
你聽到的是一個處理笛卡爾飛機的簡單問題。 Kinect在XYZ空間中有20個關節,距離以米爲單位。爲了訪問這些關節,你有一個「跟蹤器」類中,這些語句(這是C#...不知道,如果你使用C#或C++的SDK):
public Tracker(KinectSensor sn, MainWindow win, string fileName)
{
window = win;
sensor = sn;
try
{
sensor.Start();
}
catch (IOException)
{
sensor = null;
MessageBox.Show("No Kinect sensor found. Please connect one and restart the application", "*****ERROR*****");
return;
}
sensor.SkeletonFrameReady += SensorSkeletonFrameReady; //Frame handlers
sensor.ColorFrameReady += SensorColorFrameReady;
sensor.SkeletonStream.Enable();
sensor.ColorStream.Enable();
}
這些訪問顏色和來自Kinect的骨架流。骨架流包含接頭,讓您專注於與這些語句:
//Start sending skeleton stream
private void SensorSkeletonFrameReady(object sender, SkeletonFrameReadyEventArgs e)
{
//Access the skeleton frame
using (SkeletonFrame skeletonFrame = e.OpenSkeletonFrame())
{
if (skeletonFrame != null)
{
//Check to see if there is any data in the skeleton
if (this.skeletons == null)
//Allocate array of skeletons
this.skeletons = new Skeleton[skeletonFrame.SkeletonArrayLength];
//Copy skeletons from this frame
skeletonFrame.CopySkeletonDataTo(this.skeletons);
//Find first tracked skeleton, if any
Skeleton skeleton = this.skeletons.Where(s => s.TrackingState == SkeletonTrackingState.Tracked).FirstOrDefault();
if (skeleton != null)
{
//Initialize joints
///<summary>
///Joints to be displayed, projected, recorded, etc.
///</summary>
Joint leftFoot = skeleton.Joints[JointType.FootLeft];
}
}
所以,在你的程序的開始,你要挑一個聯合(有20 ...選擇一個,將永遠是當你執行程序)對Kinect的面對並且用類似下面的語句獲取其位置:
if(skeleton.Joints[JointType.FootLeft].TrackingState == JointTrackingState.Tracked)
{
double xPosition = skeleton.Joints[JointType.FootLeft].Position.X;
double yPosition = skeleton.Joints[JointType.FootLeft].Position.Y;
double zPosition = skeleton.Joints[JointType.FootLeft].Position.Z;
}
最後,你會希望你停止流之前有輕微的延遲.. 。在點擊和關閉Kinect流之間的一段時間。然後,你會做數學,你需要做的兩個點之間的距離。如果你沒有延遲,你將無法得到你的笛卡爾點。
相關問題
- 1. 計算行駛距離-Android
- 2. 如何計算行駛距離
- 3. 使用谷歌地圖計算實時行駛距離
- 4. 在iPhone中計算駕駛距離
- 5. 計算駕駛距離Google Maps API
- 6. 使用Mapstraction創建駕駛方向和計算駕駛距離的文檔
- 7. 使用Android Accelerometer來計算距離,eleveation?
- 8. 來計算地球上兩個座標之間的行駛距離在php
- 9. 行駛距離使用谷歌距離矩陣
- 10. 用於計算自行車行駛距離的Android應用程序
- 11. 使用awk計算距離
- 12. 加速R算法來計算Hellinger距離的距離矩陣
- 13. 計算不考慮地圖的駕駛距離
- 14. 計算距離
- 15. 計算距離
- 16. 距離計算
- 17. 計算距離
- 18. 計算距離
- 19. 計算距離
- 20. 計算距離
- 21. 計算距離
- 22. 計算距離
- 23. 計算距離
- 24. 計算距離
- 25. 計算距離
- 26. 逐行距離計算
- 27. API來計算2個美國街道地址之間的駕駛距離?
- 28. 駕駛距離的REST API?
- 29. 每天計算和存儲大量駕駛距離(PHP JavaScript)
- 30. 僅使用PHP計算兩點之間的駕駛距離(必應地圖)
你使用哪個SDK? OpenNI(1.54或2.0)或Kinect SDK? – ArturSkowronski
我正在使用KinectSDK – TeegsD