c# - MapFromSkeletonPoint 在 Kinect 中已过时

标签 c# visual-studio-2010 kinect msdn kinect-sdk

我遇到了 Kinect SDK 的问题,因为我想要使用的一些代码正在利用过时的类。我正在 Windows7 的 VS2010 中将其构建为 x86 程序。当前的 Kinect SDK 版本为 1.7。

我正在使用的文件可以在这里找到: a link

这是我专门用来修复错误的代码:

       private Point GetPosition2DLocation(DepthImageFrame depthFrame, SkeletonPoint skeletonPoint)
    {
        DepthImagePoint depthPoint = depthFrame.MapFromSkeletonPoint(skeletonPoint);

        switch (ImageType)
        {
            case ImageType.Color:
                ColorImagePoint colorPoint = depthFrame.MapToColorImagePoint(depthPoint.X, depthPoint.Y, this.Kinect.ColorStream.Format);

                // map back to skeleton.Width & skeleton.Height
                return new Point(
                    (int)(this.RenderSize.Width * colorPoint.X / this.Kinect.ColorStream.FrameWidth),
                    (int)(this.RenderSize.Height * colorPoint.Y / this.Kinect.ColorStream.FrameHeight));
            case ImageType.Depth:
                return new Point(
                    (int)(this.RenderSize.Width * depthPoint.X / depthFrame.Width),
                    (int)(this.RenderSize.Height * depthPoint.Y / depthFrame.Height));
            default:
                throw new ArgumentOutOfRangeException("ImageType was a not expected value: " + ImageType.ToString());
        }
    }

它使用的过时类是: Microsoft.Kinect.DepthImageFrame.MapFromSkeletonPoint(Microsoft.Kinect.SkeletonPoint) & Microsoft.Kinect.DepthImageFrame.MapToColorImagePoint(int, int, Microsoft.Kinect.ColorImageFormat)

这些是我应该在修复中使用的类方法,我只是还不知道如何做到这一点:

public DepthImagePoint MapSkeletonPointToDepthPoint (
     SkeletonPoint skeletonPoint,
     DepthImageFormat depthImageFormat
)

public ColorImagePoint MapDepthPointToColorPoint (
     DepthImageFormat depthImageFormat,
     DepthImagePoint depthPoint,
     ColorImageFormat colorImageFormat
)

这是我构建 RobosapianKinect 文件夹时收到的错误报告:

警告 1 字段“Com.Enterprisecoding.RobosapienKinect.MainWindow.kinectStream”已分配,但从未使用其值 C:\Robosapien\Robosapien-master\RobosapienKinect\MainWindow.xaml.cs 50 24 RobosapienKinect

警告 2“Microsoft.Kinect.DepthImageFrame.MapFromSkeletonPoint(Microsoft.Kinect.SkeletonPoint)”已过时:“此方法已被 Microsoft.Kinect.CooperativeMapper.MapSkeletonPointToDepthPoint 替换”C:\Robosapien\Robosapien-master\RobosapienKinect\Viewers\KinectSkeletonViewer.xaml.cs 172 42 RobosapienKinect

警告 3 'Microsoft.Kinect.DepthImageFrame.MapToColorImagePoint(int, int, Microsoft.Kinect.ColorImageFormat)' 已过时:'此方法已被 Microsoft.Kinect.CooperativeMapper.MapDepthPointToColorPoint 取代' C:\Robosapien-master\RobosapienKinect\Viewers\KinectSkeletonViewer.xaml.cs 177 50 RobosapienKinect

警告 4“Microsoft.Kinect.DepthImageFrame.MapFromSkeletonPoint(Microsoft.Kinect.SkeletonPoint)”已过时:“此方法已被 Microsoft.Kinect.CooperativeMapper.MapSkeletonPointToDepthPoint 替换”C:\Robosapien-master\RobosapienKinect\Viewers\KinectSkeletonViewer .xaml.cs 172 42 RobosapienKinect

警告 5 'Microsoft.Kinect.DepthImageFrame.MapToColorImagePoint(int, int, Microsoft.Kinect.ColorImageFormat)' 已过时:'此方法已被 Microsoft.Kinect.CooperativeMapper.MapDepthPointToColorPoint 取代' C:\Robosapien\Robosapien-master\RobosapienKinect\Viewers\KinectSkeletonViewer.xaml.cs 177 50 RobosapienKinect

警告 6 字段“Com.Enterprisecoding.RobosapienKinect.MainWindow.kinectStream”已分配,但从未使用其值 C:\Robosapien\Robosapien-master\RobosapienKinect\MainWindow.xaml.cs 50 24 RobosapienKinect

最佳答案

MapToColorImagePointMapFromSkeletonPoint 方法已过时。过时的方法已经过时,不再使用。相反,它们被替换为几乎做同样事情的另一种方法。

在本例中,MapToColorImagePoint 替换为 MapDepthPointToColorPointMapFromSkeletonPoint 替换为 MapSkeletonPointToDepthPoint。您应该使用这些方法而不是旧的方法。

用于将骨架点映射到深度点:

DepthImagePoint depthPoint = this.Kinect.CoordinateMapper.MapSkeletonPointToDepthPoint(skeletonPoint, this.Kinect.DepthStream.Format);

用于将深度点映射到颜色点:

ColorImagePoint colorPoint = this.Kinect.CoordinateMapper.MapDepthPointToColorPoint (this.Kinect.DepthStream.Format, depthPoint, this.Kinect.ColorStream.Format);

关于c# - MapFromSkeletonPoint 在 Kinect 中已过时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15693056/

相关文章:

c# - 如何在 C# 控制台项目中授予写入权限

c# - 库需要引用 System.Windows.Forms

c++ - 在 C++ 中运行外部应用程序的回调

c# - 检测张开的拳头和闭合的拳头

c# - 如何设置 CommandTimeout

c - VS2010 - 使用 cmd.exe 调试 win32 控制台应用程序

c++ - 在 Visual Studio 2010 中使用大型查找表的代码库链接器的局限性

visual-studio-2010 - Visual Studio 2010 可以做 ".inc"文件语法高亮吗?

c# - 修改EmguCV以使用P/Invoke添加缺少的功能

c# - 检查给定类型是否为枚举