예제 #1
0
        public void ConverToGrayScale(byte[] pixelData)
        {
            var mapper      = new CoordinateMapper(sensor);
            var depthPoints = new DepthImagePoint[640 * 480];

            // map depth and pixel data
            mapper.MapColorFrameToDepthFrame(
                ColorImageFormat.RgbResolution640x480Fps30,
                DepthImageFormat.Resolution640x480Fps30,
                depthImagePixels,
                depthPoints);

            for (int i = 0; i < depthPoints.Length; i++)
            {
                var pixelDataIndex = i * 4;
                var point          = depthPoints[i];

                // if pointer is further than 800 mm and is not recognized as a valid point
                if (point.Depth > 800 || KinectSensor.IsKnownPoint(point) == false)
                {
                    var max = Math.Max(pixelData[pixelDataIndex], Math.Max(pixelData[pixelDataIndex + 1], pixelData[pixelDataIndex + 2]));

                    // use maximum value to set r g b values.
                    pixelData[pixelDataIndex]     = max; //blue
                    pixelData[pixelDataIndex + 1] = max; //green
                    pixelData[pixelDataIndex + 2] = max; //red
                }
            }
        }
        private void ReconhecerDistancia(DepthImageFrame quadro, byte[] bytesImagem, int distanciaMaxima)
        {
            if (quadro == null || bytesImagem == null)
            {
                return;
            }

            using (quadro)
            {
                DepthImagePixel[] imagemProfundidade = new DepthImagePixel[quadro.PixelDataLength];
                quadro.CopyDepthImagePixelDataTo(imagemProfundidade);

                DepthImagePoint[] pontosImagemProfundidade = new DepthImagePoint[640 * 480];
                kinect.CoordinateMapper.MapColorFrameToDepthFrame(kinect.ColorStream.Format, kinect.DepthStream.Format, imagemProfundidade, pontosImagemProfundidade);

                for (int i = 0; i < pontosImagemProfundidade.Length; i++)
                {
                    var point = pontosImagemProfundidade[i];
                    if (point.Depth < distanciaMaxima && KinectSensor.IsKnownPoint(point))
                    {
                        var pixelDataIndex = i * 4;

                        byte maiorValorCor = Math.Max(bytesImagem[pixelDataIndex], Math.Max(bytesImagem[pixelDataIndex + 1], bytesImagem[pixelDataIndex + 2]));

                        bytesImagem[pixelDataIndex]     = maiorValorCor;
                        bytesImagem[pixelDataIndex + 1] = maiorValorCor;
                        bytesImagem[pixelDataIndex + 2] = maiorValorCor;
                    }
                }
            }
        }
예제 #3
0
        private void GrayscaleData(byte[] pixelData)
        {
            var mapper      = new CoordinateMapper(sensor);
            var depthPoints = new DepthImagePoint[640 * 480];

            mapper.MapColorFrameToDepthFrame(ColorImageFormat.InfraredResolution640x480Fps30, DepthImageFormat.Resolution640x480Fps30, depthImagePixels, depthPoints);

            for (int i = 0; i < depthPoints.Length; i++)
            {
                var point = depthPoints[i];
                if (point.Depth > 600 || !KinectSensor.IsKnownPoint(point))
                {
                    var pixelDataIndex = i * 4;
                    var max            = Math.Max(pixelData[pixelDataIndex], Math.Max(pixelData[pixelDataIndex + 1], pixelData[pixelDataIndex + 2]));
                    pixelData[pixelDataIndex]     = max;
                    pixelData[pixelDataIndex + 1] = max;
                    pixelData[pixelDataIndex + 2] = max;
                }
            }
        }
예제 #4
0
        private void ReconhecerProfundidade(byte[] bytesImagem, int distanciaMaxima, DepthImagePixel[] imagemProfundidade)
        {
            DepthImagePoint[] pontosImagemProfundidade = new DepthImagePoint[640 * 480];
            kinect.CoordinateMapper.MapColorFrameToDepthFrame(kinect.ColorStream.Format, kinect.DepthStream.Format, imagemProfundidade, pontosImagemProfundidade);

            for (int i = 0; i < pontosImagemProfundidade.Length; i++)
            {
                var point = pontosImagemProfundidade[i];
                if (point.Depth < distanciaMaxima && KinectSensor.IsKnownPoint(point))
                {
                    var pixelDataIndex = i * 4;

                    byte maiorValorCor = Math.Max(bytesImagem[pixelDataIndex], Math.Max(bytesImagem[pixelDataIndex + 1], bytesImagem[pixelDataIndex + 2]));

                    bytesImagem[pixelDataIndex]     = maiorValorCor;
                    bytesImagem[pixelDataIndex + 1] = maiorValorCor;
                    bytesImagem[pixelDataIndex + 2] = maiorValorCor;
                }
            }
        }