このエントリはKINECT SDK Advent Calendar : ATNDの12月12日分です。
kaorun55氏のC#+WPFを参考にVB+WPFに変更しました。
基本となるRGB画像を表示します。
いきなりソースコードから
MainWindow.xaml
----------------------------------------------------------------------------
<Window x:Class="MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="518" Width="665">
<Grid>
<Image Height="480" Name="kinectImage" Width="640" />
</Grid>
</Window>
----------------------------------------------------------------------------
画面についてはImageコントロールのNameプロパティだけ注意すれば特に問題はないですね。
予め、メニューの「プロジェクト」->「参照の追加」->「.NET」タブから「Microsoft.Reseach.Kinect」を追加するようにしましょう。(C#だとソリューションエクスプローラーに「参照設定」が表示されるのにVBにはないんですよね。なぜなのかな?)
MainWindow.xaml.vb
----------------------------------------------------------------------------
Imports Microsoft.Research.Kinect.Nui
Class MainWindow
Inherits Window
Public nui As Runtime
Public Sub New()
' この呼び出しはデザイナーで必要です。
InitializeComponent()
' InitializeComponent() 呼び出しの後で初期化を追加します。
'KINECTの確認
If Runtime.Kinects.Count > 0 Then
nui = Runtime.Kinects(0)
Else
MsgBox("KINECTが接続されていません。")
Exit Sub
End If
End Sub
Private Sub Window_Loaded(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles MyBase.Loaded
''KINECT初期化
nui.Initialize(RuntimeOptions.UseColor)
''Videoデータの取得
nui.VideoStream.Open(ImageStreamType.Video, 2, ImageResolution.Resolution640x480, ImageType.Color)
''イベントハンドルの追加
AddHandler nui.VideoFrameReady, AddressOf kinect_VideoFrameReady
End Sub
Private Sub kinect_VideoFrameReady(ByVal sender As Object, ByVal e As ImageFrameReadyEventArgs)
Dim image As PlanarImage = e.ImageFrame.Image
''ImageコントロールにVideoストリームを割り当て
kinectImage.Source = BitmapSource.Create(image.Width, image.Height, 96, 96, PixelFormats.Bgr32, Nothing, image.Bits, image.Width * image.BytesPerPixel)
'リソース不足でエラーが出るので強制的にGC
System.GC.Collect()
End Sub
End Class
----------------------------------------------------------------------------
処理の大まかな流れは
1.初期化とKINECTの確認
2.Window表示
3.KINECT初期化
4.VideoStreamのオープン後、1フレームごとにインベント呼び出し
5.ImageコントロールにVideoStreamデータを割り当て
となります。
内容についてはコメントを見てもらえれば何をしているのかはわかると思います。
0 件のコメント:
コメントを投稿