前提・実現したいこと
WPFのC#でKinectV2でカラー画像を表示させるソースコードを書いたのですがエラーが多く動きません。
いろいろ試してみたのですが解決できませんでした。
原因や解決法等わかるかたがいましたらお願いします。
発生している問題・エラーメッセージ
エラーメッセージ
コンテキストに名前が存在しない、名前空間にフィールドやメソッドのようなメンバーを直接含めることはできません
該当のソースコード
using System;
using System.Windows;
using Microsoft.Kinect;
using System.Windows.Media.Imaging;
namespace KinectV2
{
/// <summary> /// MainWindow.xaml の相互作用ロジック /// </summary> public partial class MainWindow : Window { //Kinect SDK KinectSensor kinect; ColorFrameReader colorFrameReader; FrameDescription colorFrameDesc; ColorImageFormat ColorFormat = ColorImageFormat.Bgra; //WPF WriteableBitmap colorBitmap; byte[] colorBuffer; int colorStride; Int32Rect colorRect; } private void Window_Loaded(object sender, RoutedEventArgs e) { try { //kinectを開く kinect = KinectSensor.GetDefault(); KinectSensor.Open(); //カラー画像の情報を作成する(BGRAフォーマット) colorFrameDesc = kinect.ColorFrameSource.CreateFrameDescription(colorFormat); //カラーリーダーを開く colorFrameReader = KinectSensor.ColorFrameSource.OpenReader(); ColorFrameReader.FrameArrived += colorFrameReader_FrameArrived; //カラー用のビットマップを作成 colorBitmap = new WriteableBitmap(colorFrameDesc.Width, colorFrameDesc.Height, 96, 96, PixelFormats.Bgra32, null); colorStride = colorFrameDesc.Width * (int)colorFrameDesc.BytesPerPixel; colorRect = new Int32Rect(0, 0, colorFrameDesc.Width, colorFrameDesc.Height); colorBuffer = new byte[colorStride * colorFrameDesc.Height]; ImageColor.Source = colorBitmap; } catch (Exception) { MessageBox.Show(ex.Message); Close(); } } void colorFrameReader_FrameArrived(object sender,ColorFrameArrivedEventArgs e) { UpdateColorFrame(e); DrawColorFrame(); } private void UpdateColorFrame(ColorFrameArrivedEventArgs e) { //カラーフレームを取得する using (var colorFrame = e.FrameReference.AcquireFrame()) { if (colorFrame == null) { return; } //BGRAデータを取得する colorBuffer = new byte[colorFrameDesc.LengthInPixels * colorFrameDesc.BytesPerPixel]; colorFrame.CopyConvertedFrameDataToArray(colorBuffer, ColorImageFormat.Bgra); } } private void DrawColorFrame() { //ビットマップにする ColorConvertedBitmap.WritePixels(colorRect, colorBuffer, colorStride, 0); } private void Window_Closing(object sender,ConsoleCancelEventArgs e) { if(colorFrameReader != null) { colorFrameReader.Dispose(); ColorFrameReader = null; } if(kinect != null) { kinect.Close(); kinect = null; } } }
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。