利用Surface SDK实现物体识别

在现代的交互式应用中,识别放置在交互表面上的物体是一项重要的功能。Surface SDK 提供了一种方式来识别带有特定标签的物体。这些标签可以是字节标签或身份标签,并且可以通过 Surface SDK 进行读取和处理。本文将介绍如何使用 Surface SDK 来实现这一功能。

创建Surface项目

首先,需要在 Visual Studio 2008 中创建一个 Surface 项目。这可以通过使用 Visual Studio 提供的模板来完成。创建项目后,将添加一个 TagVisualizer 到 SurfaceWindow1 中。

TagVisualizer 是响应带有标签的物体并在物体放置时显示 TagVisualization 的组件。以下是在 XAML 中添加 TagVisualizer 的示例代码:

<s:TagVisualizer Name="TagVisualizer"> </s:TagVisualizer>

接下来,需要创建一个 TagVisualization,这将是在表面上显示的内容。可以通过添加新项来创建 TagVisualization。以下是创建名为 SampleTagVisualization 的 TagVisualization 的示例代码:

<s:TagVisualization x:Class="MySurfaceApplication.SampleTagVisualization" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="http://schemas.microsoft.com/surface/2008" Loaded="SampleTagVisualization_Loaded"> <Grid Height="400" Width="600" Background="White"> <TextBlock Text="Some Tagged Object UI here." VerticalAlignment="Center" HorizontalAlignment="Center" Foreground="Red" /> </Grid> </s:TagVisualization>

TagVisualizationDefinition 用于定义 TagVisualizer 将响应的标签值,以及可视化的源、物理位置、方向和其他属性。可以通过 XAML 或代码后台来添加这个定义。以下是通过 XAML 添加的示例代码:

<s:TagVisualizer Name="TagVisualizer"> <s:TagVisualizer.Definitions> <s:ByteTagVisualizationDefinition Value="192" Source="SampleTagVisualization.xaml" UsesTagOrientation="True" TagRemovedBehavior="Fade" PhysicalCenterOffsetFromTag="7.5,4.5" /> </s:TagVisualizer.Definitions> </s:TagVisualizer>

或者,可以通过代码后台添加这个定义:

ByteTagVisualizationDefinition tagVisualizationDefinition = new ByteTagVisualizationDefinition(); tagVisualizationDefinition.Value = 192; tagVisualizationDefinition.Source = new Uri("SampleTagVisualization.xaml", UriKind.Relative); tagVisualizationDefinition.UsesTagOrientation = true; tagVisualizationDefinition.TagRemovedBehavior = TagRemovedBehavior.Fade; tagVisualizationDefinition.PhysicalCenterOffsetFromTag = new Vector(7.5, 4.5); TagVisualizer.Definitions.Add(tagVisualizationDefinition);
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485