Kinect骨骼数据与彩色影像和深度影像的对齐

 很多同学留言问怎么讲两种影像数据显示在同一张屏幕上,也就是说怎么将骨骼数据叠加到彩色影像或者深度影像上,将彩色影像叠加到深度影像就不讨论了,因为没啥意义。

    这个问题其实很简单,因为在Kinect Developer Toolkit中很多例子中又可以看到这两种类型的叠加,而源代码也都有,这也是为啥我不想将这个的原因。怎么将这三种影像显示在屏幕上我在第三讲:基础知识 下第四讲:景深数据处理 上和 第六讲:骨骼追踪基础 上都分别讲过。要点是,

  • 在显示彩色影像和深度影像时最好使用WriteableBitmap对象;
  • 要想将骨骼数据影像和深度影像,或者彩色影像叠加到一起,首先要确定深度影像的分辨率和大小,为了方便,这里将深度影像数据和彩色影像数据都采用640x480Fps30的格式,同时将Grid的大小也设置为640*480。
  • 要将骨骼数据和深度影像数据叠加,需要将关节点转换到深度影像所在空间中,可以直接调用MapSkeletonPointToDepthPoint,如果要将骨骼数据叠加到彩色影像上,只需要调用MapSkeletonPointToColorPoint方法。

    很多代码我都是直接拷贝之前文章中的代码。

一、 前端代码

    界面很简单,在Grid对象下面有两个Image对象,和一个嵌套的Grid对象。前面两个Image对象分别用来显示彩色影像数据和深度影像数据,后面的Grid对象是用来绘制骨骼的,需要注意的是Grid对象的属性要设置为Transparent,这样的话就可以将Grid上绘制骨骼而不会遮住下面的彩色影像或者深度影像了。

代码如下:

<Window x:Class="KinectSkeletonAlignwithColorandDepthImage.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Width="660" Height="520">
    <Grid  Width="640" Height="480">
        <Image x:Name="ColorImage" Visibility="Hidden"  />
        <Image x:Name="DepthImage" />
        <Grid x:Name="LayoutRoot" Background="Transparent" >
        </Grid>
    </Grid>
</Window>

 

二、后台代码

    后台代码和之前三篇文章中的一样,您只需要将那些代码挪到这里就可以了,我这里不贴出来浪费大家时间了,代码您可以直接在后面下载。

    下面是将骨骼数据叠加到深度影像上的效果。

未标题-2 
    如果您想看叠加到彩色影像上的效果,只需要将DepthImage的Visibility属性改为Hidden,然后将ColorImage的该属性去掉,然后再骨骼数据转换为彩色影像时调用MapSkeletonPointToColorPoint即可。

三、结语

    两种数据格式的叠加只需要将骨骼数据转到对应的空间即可,这种转换方式Kinect SDK中已经直接提供给我们了,相信大家自己做的话不难。本例子很简单,您要想进一步处理的话,可以在此基础上添加窗体缩放然后影像数据对应缩放的效果。我这里就不实现了,代码都是以前的代码,不嫌麻烦的话,可以点击此处下载。后面我会写一些关于手指识别的东西,敬请期待。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值