Kinect World坐标

时间:2014-07-12 18:39:33

标签: c# coordinates kinect coordinate-systems

我试图计算用户选择的点的x,y和z坐标。 我的程序显示彩色流图像和深度流图像,用户可以选择两个兴趣点。然后我的程序应该计算两点之间的距离。因为我需要以mm为单位的坐标。所以我的计划是将框架映射到SkeletonPoint结构,这样我就可以读取由kinect传感器提供的信息。 我现在的问题是,如果我做得对,或者我在代码中遗漏了某些内容。 问题是我有时会在x和y轴上的某个点得到负坐标,所以我不确定我是否遗漏了某些东西。

   SkeletonPoint[] mySkeletonArray;     

    private void SensorDepthFrameReady(object sender, DepthImageFrameReadyEventArgs e)
    {
        using (DepthImageFrame dFrame = e.OpenDepthImageFrame())
        {
            if (dFrame != null)
            {
                dFrame.CopyDepthImagePixelDataTo(myDepthArray);
                mySensor.CoordinateMapper.MapDepthFrameToSkeletonFrame(DepthImageFormat.Resolution640x480Fps30, myDepthArray, mySkeletonArray);


                this.myDepthBitmap.WritePixels(
                    new Int32Rect(0, 0, this.myDepthBitmap.PixelWidth, this.myDepthBitmap.PixelHeight),
                    this.colorPixels,
                    this.myDepthBitmap.PixelWidth * sizeof(int),
                    0);
            }
        }
    }

    private void Mouse_ClickTest(object sender, System.Windows.Input.MouseEventArgs e)
    {
        System.Windows.Point myMousePosition = e.GetPosition(DepthImage);
        double xpixel = myMousePosition.X;
        double ypixel = myMousePosition.Y;
        int xpos = (int)xpixel;
        int ypos = (int)ypixel;
        int depthWidth = mySensor.DepthStream.FrameWidth;
        int depthIndex = xpos + (ypos * depthWidth);
        SkeletonPoint mySkeletonArray = this.mySkeletonArray[depthIndex];
        float zpos = mySkeletonArray.Z;
        float xp = mySkeletonArray.X;
        float yp = mySkeletonArray.Y;
        }

0 个答案:

没有答案