这是我写的第二篇文章,最近在研究Kinect,用到深度图时出现了这个问题,环境工具会显示Microsort.Kinect.KinectSensor.MapDepthFrameToColorFrame(
DepthImageFormat depthImageFormat,
short[] depthPixelData,
ColorImageFormat colorImageFormat,
ColorImagePoint[] colorCoordinates
)无效
变成了,Microsort.Kinect.KinectSensor.CoordinateMapper.MapDepthFrameToColorFrame(
DepthImageFormat depthImageFormat, DepthImagePixel [] depthImagePixel, ColorImageFormat colorImageFormat, ColorImagePoint[] colorCoordinates
),即第二个参数变了==
愁得个我啊,毕竟刚学C#和Kinect不长。。。于是花费了一段时间找到DepthImageFrame.CopyDepthImagePixelDataTo(DepthImagePixel [] depthImagePixel),即简化来说,这样做:
ColorImageFrame colorframe;
colorframe = e.OpenColorImageFrame();//放到一个事件处理函数里
DepthImagePixel [] depthImagePixel=new DepthImagePixel[depthframe.PixelDataLength];//定义一个数组并且指定大小
depthframe.CopyDepthImagePixelDataTo(depthImagePixel);//这是关键,利用它将DepthImageFrame中的DepthImagePixel复制到定义好的数组中
然后呢,就可以调用KinectSensor.CoordinateMapper.MapDepthFrameToColorFrame();第二个参数传入depthImagePixel,其余参数保持不变就可以啦~然后运行程序(自己写吧),成功,没有错误!