This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
KinectSensor kinect; | |
BodyIndexFrameReader bodyIndexFrameReader; | |
FrameDescription bodyIndexFrameDesc; | |
byte[] bodyIndexBuffer; | |
WriteableBitmap bodyIndexColorImage; | |
Int32Rect bodyIndexColorRect; | |
int bodyIndexColorStride; | |
int bodyIndexColorBytesPerPixel = 4; | |
Color[] bodyIndexColors; | |
private void Window_Loaded(object sender, RoutedEventArgs e){ | |
kinect = KinectSensor.GetDefault(); | |
if(kinect!=null){ | |
kinect.Open(); | |
bodyIndexFrameDesc = kinect.DepthFrameSource.FrameDescription; | |
bodyIndexBuffer = new byte[bodyIndexFrameDesc.LengthInPixels]; | |
//下記は人物領域を表示する際に使う | |
bodyIndexColorImage = new WriteableBitmap(bodyIndexFrameDesc.Width, bodyIndexFrameDesc.Height, 96, 96, PixelFormats.Bgra32, null); | |
bodyIndexColorRect = new Int32Rect(0, 0, bodyIndexFrameDesc.Width, bodyIndexFrameDesc.Height); | |
bodyIndexColorStride = (int)(bodyIndexFrameDesc.Width * bodyIndexColorBytesPerPixel); | |
bodyIndexColorBuffer = new byte[bodyIndexFrameDesc.LengthInPixels * bodyIndexColorBytesPerPixel]; | |
// | |
bodyIndexFrameReader = kinect.BodyIndexFrameSource.OpenReader(); | |
//フレーム到着時のイベント設定 | |
bodyIndexFrameReader.FrameArrived += BodyIndexFrameReader_FrameArrived; | |
} | |
} | |
void BodyIndexFrameReader_FrameArrived(object sender, BodyIndexFrameArrivedEventArgs e){ | |
using (var bodyIndexFrame = e.FrameReference.AcquireFrame()){ | |
if (bodyIndexFrame == null){ | |
return; | |
} | |
// ボディインデックスデータをバイト配列に格納する | |
bodyIndexFrame.CopyFrameDataToArray(bodyIndexBuffer); | |
for (int i = 0; i < bodyIndexBuffer.Length; i++){ | |
//人物領域のインデックス番号を取得 | |
var index = bodyIndexBuffer[i]; | |
//非人物領域は255 | |
if (index != 255){ | |
/** 人物領域に対して何かする | |
} | |
} | |
} |
0 件のコメント:
コメントを投稿