求kinect大神帮忙。求一段C#代码,有偿也可以。。。。
求一段在kinect前面用右手画图的代码。也就是追踪右手节点轨迹的代码。、、 --------------------编程问答-------------------- 留下联系方式,这个蛮简单的。 --------------------编程问答--------------------Skeleton[] skeletons = new Skeleton[0];--------------------编程问答--------------------
using (SkeletonFrame skeletonFrame = e.OpenSkeletonFrame())
{
if (skeletonFrame != null)
{
skeletons = new Skeleton[skeletonFrame.SkeletonArrayLength];
skeletonFrame.CopySkeletonDataTo(skeletons);
}
}
using (DrawingContext dc = this.drawingGroup.Open())
{
dc.DrawRectangle(Brushes.Black, null, new Rect(0.0, 0.0, RenderWidth, RenderHeight));
if (skeletons.Length != 0)
{
foreach (Skeleton skel in skeletons)
{
RenderClippedEdges(skel, dc);
if (skel.TrackingState == SkeletonTrackingState.Tracked)
{
foreach (Joint joint in skel.Joints)
{
if (joint.JointType == JointType.HandRight)
{
Brush drawBrush = null;
if (joint.TrackingState == JointTrackingState.Tracked)
{
drawBrush = this.trackedJointBrush;
}
else if (joint.TrackingState == JointTrackingState.Inferred)
{
drawBrush = this.inferredJointBrush;
}
if (drawBrush != null)
{
dc.DrawEllipse(drawBrush, null, this.SkeletonPointToScreen(joint.Position), JointThickness, JointThickness);
}
}
}
}
else if (skel.TrackingState == SkeletonTrackingState.PositionOnly)
{
dc.DrawEllipse(
this.centerPointBrush,
null,
this.SkeletonPointToScreen(skel.Position),
BodyCenterThickness,
BodyCenterThickness);
}
}
}
// prevent drawing outside of our render area
this.drawingGroup.ClipGeometry = new RectangleGeometry(new Rect(0.0, 0.0, RenderWidth, RenderHeight));
}
private Point SkeletonPointToScreen(SkeletonPoint skelpoint)
{
DepthImagePoint depthPoint = this.sensor.CoordinateMapper.MapSkeletonPointToDepthPoint(skelpoint, DepthImageFormat.Resolution640x480Fps30);
return new Point(depthPoint.X, depthPoint.Y);
}
private void WindowLoaded(object sender, RoutedEventArgs e)
{
this.drawingGroup = new DrawingGroup();
this.imageSource = new DrawingImage(this.drawingGroup);
Image.Source = this.imageSource;
foreach (var potentialSensor in KinectSensor.KinectSensors)
{
if (potentialSensor.Status == KinectStatus.Connected)
{
this.sensor = potentialSensor;
break;
}
}
if (null != this.sensor)
{
this.sensor.SkeletonStream.Enable();
this.sensor.SkeletonFrameReady += this.SensorSkeletonFrameReady;
try
{
this.sensor.Start();
}
catch (IOException)
{
this.sensor = null;
}
}
}
private void SensorSkeletonFrameReady(object sender, SkeletonFrameReadyEventArgs e)
{
}
把第一段代码放到SensorSkeletonFrameReady里就好了,这样你的右手节点就出来了,剩下的轨迹自己去写。这个是官方的demo,一改就OK了啊,刚开始多看看官方例子,看懂了一个剩下的自己去写算法就是了。我也是初学,共同进步。 --------------------编程问答-------------------- 我想在color basic和这个上面改的。可是我想在colorbasic 那个里面画图就画不出来。。。有空加我QQ:150927210 一起交流哈。。。。
补充:.NET技术 , C#