2014-11-08 1 views
1

Я пытаюсь разработать приложение, которое будет перемещать курсор моей рукой. Я написал полный код и его движущийся курсор моей рукой, но область действия очень ограничена. Когда я перемещаю руку вверх, курсор не перемещается соответственно. Я захватил точки руки и установил положение мыши, используя следующий код.Как перемещать курсор с Kinect в портретном представлении?

DepthImagePoint handPt; 

Joint hand = skl.Joints[JointType.HandRight]; 

handPt = sensor.CoordinateMapper.MapSkeletonPointToDepthPoint(hand.Position, DepthImageFormat.Resolution640x480Fps30); 

Mouse.setPosition(HandPt.X, handPt.Y) 

Пожалуйста, скажите мне, как перемещение мыши правильно с точки зрения Портрет

ответ

1

Я думаю, что ваша проблема может быть в том, что не сопоставлена ​​положение курсора на его эквивалент на contairner, что держит вас курсор или на разрешение экрана. Изображение Kinect обычно находится в разрешении 640x480px, в то время как ваш экран, очевидно, намного больше. Я добавил строку к вашему коду:

DepthImagePoint handPt; 

Joint hand = skl.Joints[JointType.HandRight]; 

handPt = sensor.CoordinateMapper.MapSkeletonPointToDepthPoint(hand.Position, DepthImageFormat.Resolution640x480Fps30); 

Point mappedPoint = new Point(handPt.X * (width/sensor.DepthStream.FrameWidth), handPt.Y * (height/sensor.DepthStream.FrameHeight)); 

Mouse.setPosition(mappedPoint.X, mappedPoint.Y) 

где ширина и высота - ширина и высота вашего контейнера/экрана. , пожалуйста, дайте мне знать, если это сработало для вас.

+0

Спасибо большое за ответ, Моя ширина экрана 720 и высота 1280, я попробовал ваш код, но он также не работает должным образом. Курсор все еще не в моей руке. Он работает лучше, но все еще создает проблему в направлении оси x и крайности оси y. – user3480644

2

Я сделал это way..this работает для меня

Joint hand = skl.Joints[JointType.HandRight]; 

CameraSpacePoint position = hand.Position; 

DepthSpacePoint handPt = sensor.CoordinateMapper.MapCameraPointToDepthSpace(position); 

Point relativePoint = new Point(handPt.X * (1280/sensor.DepthFrameSource.FrameDescription.Width), handPt.Y * (720/sensor.DepthFrameSource.FrameDescription.Height)); 

Mouse.setPosition(relativePoint.X, relativePoint.Y); 
Смежные вопросы