public DepthFrame(Windows.Kinect.DepthFrame df) { Type = FrameType.Depth; this.underlyingDepthFrame = df; // Set Dimensions of the depth frame Width = df.DepthFrameSource.FrameDescription.Width; Height = df.DepthFrameSource.FrameDescription.Height; // Reserve memory for storing depth data if (depthData == null) { depthData = new ushort[Width * Height]; } // Copy depth data to memory reserved earlier df.CopyFrameDataToArray(this.depthData); }
public Status Update() { Kinect.MultiSourceFrame frame = _Reader.AcquireLatestFrame(); if (frame == null) { //Debug.LogWarning("Frame not arrived"); return(Status.ZeroBody); } Kinect.DepthFrame depthFrame = frame.DepthFrameReference.AcquireFrame(); if (depthFrame == null) { return(Status.ZeroBody); } depthFrame.CopyFrameDataToArray(DepthData); depthFrame.Dispose(); depthFrame = null; Kinect.BodyFrame bodyFrame = frame.BodyFrameReference.AcquireFrame(); if (bodyFrame == null) { return(Status.ZeroBody); } bodyFrame.GetAndRefreshBodyData(_BodyData); bodyFrame.Dispose(); bodyFrame = null; int bodyIdx; Status status; checkTrackedBody(out bodyIdx, out status); if (status != Status.ZeroBody) { JointData = _BodyData[bodyIdx].Joints; JointOriendationData = _BodyData[bodyIdx].JointOrientations; } return(status); }
public bool GetMultiSourceFrame(KinectInterop.SensorData sensorData) { if(multiSourceFrameReader != null) { multiSourceFrame = multiSourceFrameReader.AcquireLatestFrame(); if(multiSourceFrame != null) { // try to get all frames at once msBodyFrame = (sensorFlags & KinectInterop.FrameSource.TypeBody) != 0 ? multiSourceFrame.BodyFrameReference.AcquireFrame() : null; msBodyIndexFrame = (sensorFlags & KinectInterop.FrameSource.TypeBodyIndex) != 0 ? multiSourceFrame.BodyIndexFrameReference.AcquireFrame() : null; msColorFrame = (sensorFlags & KinectInterop.FrameSource.TypeColor) != 0 ? multiSourceFrame.ColorFrameReference.AcquireFrame() : null; msDepthFrame = (sensorFlags & KinectInterop.FrameSource.TypeDepth) != 0 ? multiSourceFrame.DepthFrameReference.AcquireFrame() : null; msInfraredFrame = (sensorFlags & KinectInterop.FrameSource.TypeInfrared) != 0 ? multiSourceFrame.InfraredFrameReference.AcquireFrame() : null; bool bAllSet = ((sensorFlags & KinectInterop.FrameSource.TypeBody) == 0 || msBodyFrame != null) && ((sensorFlags & KinectInterop.FrameSource.TypeBodyIndex) == 0 || msBodyIndexFrame != null) && ((sensorFlags & KinectInterop.FrameSource.TypeColor) == 0 || msColorFrame != null) && ((sensorFlags & KinectInterop.FrameSource.TypeDepth) == 0 || msDepthFrame != null) && ((sensorFlags & KinectInterop.FrameSource.TypeInfrared) == 0 || msInfraredFrame != null); if(!bAllSet) { // release all frames if(msBodyFrame != null) { msBodyFrame.Dispose(); msBodyFrame = null; } if(msBodyIndexFrame != null) { msBodyIndexFrame.Dispose(); msBodyIndexFrame = null; } if(msColorFrame != null) { msColorFrame.Dispose(); msColorFrame = null; } if(msDepthFrame != null) { msDepthFrame.Dispose(); msDepthFrame = null; } if(msInfraredFrame != null) { msInfraredFrame.Dispose(); msInfraredFrame = null; } } // else // { // bool bNeedBody = (sensorFlags & KinectInterop.FrameSource.TypeBody) != 0; // bool bNeedBodyIndex = (sensorFlags & KinectInterop.FrameSource.TypeBodyIndex) != 0; // bool bNeedColor = (sensorFlags & KinectInterop.FrameSource.TypeColor) != 0; // bool bNeedDepth = (sensorFlags & KinectInterop.FrameSource.TypeDepth) != 0; // bool bNeedInfrared = (sensorFlags & KinectInterop.FrameSource.TypeInfrared) != 0; // // bAllSet = true; // } } return (multiSourceFrame != null); } return false; }
public void FreeMultiSourceFrame(KinectInterop.SensorData sensorData) { // release all frames if(msBodyFrame != null) { msBodyFrame.Dispose(); msBodyFrame = null; } if(msBodyIndexFrame != null) { msBodyIndexFrame.Dispose(); msBodyIndexFrame = null; } if(msColorFrame != null) { msColorFrame.Dispose(); msColorFrame = null; } if(msDepthFrame != null) { msDepthFrame.Dispose(); msDepthFrame = null; } if(msInfraredFrame != null) { msInfraredFrame.Dispose(); msInfraredFrame = null; } if(multiSourceFrame != null) { multiSourceFrame = null; } }