PR

Kinectを使って、顔の動きを認識して画面に表示する

2012年10月1日(月)
薬師寺 国安

今回のサンプルは、Kinect for Windows Developer Toolkit 1.5.1に含まれる、Face Tracking Basics-WPFのC#のサンプルを参考に、少しアレンジを加えてVBに書き換えた、顔の輪郭を追跡して表示するサンプルです。

実際の動きは図1と動画を参照してください。このサンプルでは実行後、まず2mほど離れると、顔の輪郭に沿って三角形の集合体のジオメトリーが表示されます。その後1m以内ぐらいまで近づき、椅子に座ったままの状態でも顔のジオメトリーが表示されます。

顔の細かい動きを追えることから、継続的に顔の動きが必要なアプリを作る際に役に立ちそうですね。

図1:プレイヤーの顔だけを追跡して表示している

サンプル一式は、会員限定特典としてダウンロードできます。記事末尾をご確認ください。

プロジェクトの作成

VS 2010のメニューから[ファイル(F)/新規作成(N)/プロジェクト(P)]と選択します。次に、「WPF アプリケーション」を選択して、「名前(N)」に任意のプロジェクト名を指定します。ここでは「KINECT_ FaceTracking」という名前を付けています。

まず初めにコードも何も記述しない空のUserControlを作成します。

UserControlの作成

VS2010のメニューから「プロジェクト(P)/ユーザーコントロールの追加(U)」と選択し、「ユーザーコントロール(WPF)」を選択します。「名前(N)」にはFaceTrackingViewer.xamlと指定し[追加(A)]ボタンをクリックします(図2)。

図2:UserControlを追加する(クリックで拡大)

FaceTrackingViwer.xamlのコードから要素のプロパティDesignHeightとDesignWidthを削除します。また要素も削除しておいてください。このままの状態でUserControlを置いておいてください。このユーザーコントロールでは、プレイヤーの顔を認識して三角形の集合体で構成されるジオメトリーを作成します。コードは後ほど記述します。

コントロールの配置(MainWindow.xaml)

まず、このMainWindow.xamlに先ほど作成しておいたFaceTrackingViewer.xamlを取り込みます。そのためには名前空間を定義する必要があります。要素内にxmlns:local=”と記述すると値の一覧が表示されますので、KINECT_FaceTracking(KINECT_FaceTracking)を選択します(図3)。

図3:UserControlであるFaceTrackingViewer.xamlを取り込むために名前空間を定義する(クリックで拡大)

ツールボックスからデザイン画面上にImageコントロール1個配置します。配置したImageコントロールの下に、

図4:

XAMLコードはリスト1、レイアウトは図5のようなります。

リスト1  (MainWindow.xaml)

  • (1)localという名前空間を定義している。
  • (2)NameがcolorImageのImageコントロールを配置している。
  • (3)FaceTrackingViewerというUserControlを取り込んでいる。
<Window x:Class="MainWindow"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:local="clr-namespace:KINECT_FaceTracking"  ■(1)
  Title="Face Tracking" Height="480" Width="640">
  <Grid Name="MainGrid"  Width="640" Height="480">
    <Image Name="colorImage" />  ■(2)
    <local:FaceTrackingViewer x:Name="FaceTrackingViewer1"/>  ■(3)
  </Grid>
</Window>
図5:各コントロールを配置した(クリックで拡大)

Think IT会員限定特典
  • 顔の動きを追跡するKinectサンプル

薬師寺国安事務所

薬師寺国安事務所代表。Visual Basic プログラミングと、マイクロソフト系の技術をテーマとした、書籍や記事の執筆を行う。
1950年生まれ。事務系のサラリーマンだった40歳から趣味でプログラミングを始め、1996年より独学でActiveXに取り組む。1997年に薬師寺聖とコラボレーション・ユニット PROJECT KySS を結成。2003年よりフリーになり、PROJECT KySS の活動に本格的に参加、.NETやRIAに関する書籍や記事を多数執筆する傍ら、受託案件のプログラミングも手掛ける。Windows Phoneアプリ開発を経て、現在はWindows ストア アプリを多数公開中

Microsoft MVP for Development Platforms - Client App Dev (Oct 2003-Sep 2012)。Microsoft MVP for Development Platforms - Windows Phone Development(Oct 2012-Sep 2013)。Microsoft MVP for Development Platforms - Client Development(Oct 2013-Sep 2014)。Microsoft MVP for Development Platforms-Windows Platform Development (Oct 2014-Sep 2015)。

連載バックナンバー

Think IT会員サービス無料登録受付中

Think ITでは、より付加価値の高いコンテンツを会員サービスとして提供しています。会員登録を済ませてThink ITのWebサイトにログインすることでさまざまな限定特典を入手できるようになります。

Think IT会員サービスの概要とメリットをチェック

他にもこの記事が読まれています

Kinectを使って、顔の動きを認識して画面に表示する | Think IT(シンクイット)

Think IT(シンクイット)

サイトに予期せぬエラーが起こりました。しばらくたってから再度お試しください。