コード例 #1
0
        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);
        }
コード例 #2
0
    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);
    }
コード例 #3
0
    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;
    }
コード例 #4
0
    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;
        }
    }