Beispiel #1
0
        void kinectChris_ColorFrameReady(object sender, ColorImageFrameReadyEventArgs e)
        {
            using (ColorImageFrame framesImagen = e.OpenColorImageFrame())
            {
                if (framesImagen == null)
                {
                    return;
                }

                if (datosColor == null)
                {
                    datosColor = new byte[framesImagen.PixelDataLength];
                }

                framesImagen.CopyPixelDataTo(datosColor);


                for (int i = 0; i < datosColor.Length; i = i + 4)
                {
                    nuevoValor = datosColor[i] + controlAzul;
                    if (nuevoValor < 0)
                    {
                        nuevoValor = 0;
                    }
                    if (nuevoValor > 255)
                    {
                        nuevoValor = 255;
                    }
                    datosColor[i] = (byte)nuevoValor;

                    nuevoValor = datosColor[i + 1] + controlVerde;
                    if (nuevoValor < 0)
                    {
                        nuevoValor = 0;
                    }
                    if (nuevoValor > 255)
                    {
                        nuevoValor = 255;
                    }
                    datosColor[i + 1] = (byte)nuevoValor;

                    nuevoValor = datosColor[i + 2] + controlRojo;
                    if (nuevoValor < 0)
                    {
                        nuevoValor = 0;
                    }
                    if (nuevoValor > 255)
                    {
                        nuevoValor = 255;
                    }
                    datosColor[i + 2] = (byte)nuevoValor;
                }

                if (grabarFoto)
                {
                    bitmapImagen = BitmapSource.Create(
                        framesImagen.Width, framesImagen.Height, 96, 96, PixelFormats.Bgr32, null,
                        datosColor, framesImagen.Width * framesImagen.BytesPerPixel);
                    grabarFoto = false;
                }

                if (bitmapEficiente == null)
                {
                    bitmapEficiente = new WriteableBitmap(
                        framesImagen.Width,
                        framesImagen.Height,
                        96,
                        96,
                        PixelFormats.Bgr32,
                        null);
                    mostrarVideo.Source = bitmapEficiente;
                }

                bitmapEficiente.WritePixels(
                    new Int32Rect(0, 0, framesImagen.Width, framesImagen.Height),
                    datosColor,
                    framesImagen.Width * framesImagen.BytesPerPixel,
                    0
                    );
            }
        }
Beispiel #2
0
 void ColorFrameReady(object sender, ColorImageFrameReadyEventArgs e)
 {
     this.rgbImage.Source = e.OpenColorImageFrame().ToBitmapSource();
 }
Beispiel #3
0
        private void ColorImageReady(object sender, ColorImageFrameReadyEventArgs e)
        {
            using (ColorImageFrame imageFrame = e.OpenColorImageFrame())
            {
                if (imageFrame != null)
                {
                    // We need to detect if the format has changed.
                    bool haveNewFormat = lastImageFormat != imageFrame.Format;
                    bool convertToRgb  = false;
                    int  bytesPerPixel = imageFrame.BytesPerPixel;

                    if (imageFrame.Format == ColorImageFormat.RawBayerResolution640x480Fps30 ||
                        imageFrame.Format == ColorImageFormat.RawBayerResolution1280x960Fps12)
                    {
                        convertToRgb  = true;
                        bytesPerPixel = 4;
                    }

                    if (haveNewFormat)
                    {
                        if (convertToRgb)
                        {
                            rawPixelData = new byte[imageFrame.PixelDataLength];
                            pixelData    = new byte[bytesPerPixel * imageFrame.Width * imageFrame.Height];
                        }
                        else
                        {
                            pixelData = new byte[imageFrame.PixelDataLength];
                        }
                    }

                    if (convertToRgb)
                    {
                        imageFrame.CopyPixelDataTo(rawPixelData);
                        ConvertBayerToRgb32(imageFrame.Width, imageFrame.Height);
                    }
                    else
                    {
                        imageFrame.CopyPixelDataTo(pixelData);
                    }

                    // A WriteableBitmap is a WPF construct that enables resetting the Bits of the image.
                    // This is more efficient than creating a new Bitmap every frame.
                    if (haveNewFormat)
                    {
                        PixelFormat format = PixelFormats.Bgr32;
                        if (imageFrame.Format == ColorImageFormat.InfraredResolution640x480Fps30)
                        {
                            format = PixelFormats.Gray16;
                        }

                        kinectColorImage.Visibility = Visibility.Visible;
                        outputImage = new WriteableBitmap(
                            imageFrame.Width,
                            imageFrame.Height,
                            96,  // DpiX
                            96,  // DpiY
                            format,
                            null);

                        kinectColorImage.Source = outputImage;
                    }

                    outputImage.WritePixels(
                        new Int32Rect(0, 0, imageFrame.Width, imageFrame.Height),
                        pixelData,
                        imageFrame.Width * bytesPerPixel,
                        0);

                    lastImageFormat = imageFrame.Format;

                    UpdateFrameRate();
                }
            }
        }
        private void Kinect_ColorFrameReady(object sender, ColorImageFrameReadyEventArgs e)
        {
            // Gelen görüntü bilgisini açıp imageFrame'e aktar
            using (ColorImageFrame imageFrame = e.OpenColorImageFrame())
            {
                // Görüntü varsa...
                if (imageFrame != null)
                {
                    // Önceki görüntü biçimi ile yeni gelen görüntü biçimi farklı mı?
                    bool haveNewFormat = lastImageFormat != imageFrame.Format;

                    // Görüntü biçimi değiştiyse...
                    if (haveNewFormat)
                    {
                        // Yeni görüntü boyutuna göre pixelData dizisini boyutlandır
                        pixelData = new byte[imageFrame.PixelDataLength];
                    }

                    // Görüntüyü pixelData dizisine aktar
                    imageFrame.CopyPixelDataTo(pixelData);

                    // Görüntü biçimi değiştiyse...
                    if (haveNewFormat)
                    {
                        // Image elementinin kaynağı olarak gösterilen outputImage'ın
                        // özelliklerini değiştir
                        outputImage = new WriteableBitmap(
                            imageFrame.Width,
                            imageFrame.Height,
                            96,
                            96,
                            PixelFormats.Bgr32,
                            null);

                        // Image elementinin kaynağını outputImage olarak belirle
                        imgColorFrame.Source = outputImage;
                    }

                    // outputImage'ın içeriğini güncelle
                    outputImage.WritePixels(
                        new Int32Rect(0, 0, imageFrame.Width, imageFrame.Height),
                        pixelData,
                        imageFrame.Width * 4,
                        0);

                    // (İstenmişse) görüntüyü kaydet...
                    if (savePictureFrame)
                    {
                        // Görüntüyü kaydet
                        SavePicture();

                        // Tetikleyici değişkeni pasifleştir
                        savePictureFrame = false;
                    }

                    // Bir sonraki görüntü biçimi karşılaştırması için, yeni görüntü
                    // biçimini kaydet
                    lastImageFormat = imageFrame.Format;
                }
            }
        }
 void kinectService_ImageFrameReady(object sender, ColorImageFrameReadyEventArgs e)
 {
     //Automagically create BitmapSource for Video
     uxKinectImage.Source = e.OpenColorImageFrame().ToBitmapSource();
 }
Beispiel #6
0
        void miKinect_ColorFrameReady(object sender, ColorImageFrameReadyEventArgs e)
        {
            using (ColorImageFrame frameImagen = e.OpenColorImageFrame())
            {
                if (frameImagen == null)
                {
                    return;
                }

                byte[] datosColor = new byte[frameImagen.PixelDataLength];

                frameImagen.CopyPixelDataTo(datosColor);
                int  largoDatosColor = datosColor.Length;
                int  i = 0;
                bool encontro = false;
                int  blanco = 254;
                int  k = 0, j = 0;
                mapaProfundidad[j] = new int[640];
                mapaBlanco[j]      = new string[640];
                i = 0;
                while (i < largoDatosColor)
                {
                    mapaBlanco[j][k] = ""; //j=480 x k=640
                    if (datosColor[i] >= blanco && datosColor[i + 1] >= blanco && datosColor[i + 2] >= blanco)
                    {
                        int x = (i / 4) / 640;
                        int y = (i / 4) % 640;
                        int z = 0;
                        try
                        {
                            z = datosDistancia[(i / 4) + 25] >> 3;
                        }
                        catch {
                            z = -9;
                        }

                        mapaBlanco[j][k] = "B"; //j=480 x k=640
                        if (encontro == false)
                        {
                            Console.WriteLine("BLANCO x: " + x + ", y: " + y + ", z: " + z);
                        }
                        encontro = true;
                    }
                    k++;
                    if (((i / 4) + 1) % 640 == 0)
                    {
                        j++;
                        if (j != 480)
                        {
                            mapaBlanco[j] = new string[640];
                        }
                        k = 0;
                    }
                    if (j % 480 == 0)
                    {
                        j = 0;
                    }
                    //Fin Calculo de j,k
                    i += 4;
                }
                j = 0;
                k = 0;
                i = 0;
                while (i < (largoDatosColor / 4))
                {
                    //Calculo de j,k
                    int valorDistancia = 0;
                    try
                    {
                        valorDistancia = datosDistancia[i] >> 3;
                    }
                    catch
                    {
                        valorDistancia = -9;
                    }
                    mapaProfundidad[j][k] = valorDistancia; //j=480 x k=640
                    k++;
                    if ((i + 1) % 640 == 0)
                    {
                        j++;
                        if (j != 480)
                        {
                            mapaProfundidad[j] = new int[640];
                        }
                        k = 0;
                    }
                    if (j % 480 == 0)
                    {
                        j = 0;
                    }
                    //Fin Calculo de j,k
                    i++;
                }

                mostrarVideo.Source = BitmapSource.Create(
                    frameImagen.Width, frameImagen.Height,
                    96,
                    96,
                    PixelFormats.Bgr32,
                    null,
                    datosColor,
                    frameImagen.Width * frameImagen.BytesPerPixel
                    );
            }
        }
Beispiel #7
0
 private void sensor_ColorFrameReady(object sender, ColorImageFrameReadyEventArgs e)
 {
     handleColorImageFrame(e.OpenColorImageFrame());
 }
Beispiel #8
0
 private void kinect_ColorFrameReady(object sender, ColorImageFrameReadyEventArgs e)
 {
     imagemCamera.Source = ObterImagemSensorRGB(e.OpenColorImageFrame());
 }
Beispiel #9
0
        private void SensorColorFrameReady(object sender, ColorImageFrameReadyEventArgs e)
        {
            Hsv lowerLimit = new Hsv(40, 100, 100);
            Hsv upperLimit = new Hsv(80, 255, 255);

            using (ColorImageFrame colorFrame = e.OpenColorImageFrame())
            {
                if (colorFrame != null)
                {
                    byte[] datosColor = new byte[colorFrame.PixelDataLength];

                    colorFrame.CopyPixelDataTo(datosColor);

                    System.Drawing.Bitmap bmp             = Helper.ImageToBitmap(colorFrame);
                    Image <Hsv, Byte>     currentFrameHSV = new Image <Hsv, byte>(bmp);
                    // Copy the pixel data from the image to a temporary array

                    Image <Gray, Byte> grayFrame = currentFrameHSV.Convert <Gray, Byte>();

                    Image <Gray, Byte> imageHSVDest = currentFrameHSV.InRange(lowerLimit, upperLimit);
                    //imageHSVDest.Erode(200);
                    VectorOfVectorOfPoint vectorOfPoint = Helper.FindContours(imageHSVDest);
                    //VectorOfPointF vf = new VectorOfPointF();
                    for (int i = 0; i < vectorOfPoint.Size; i++)
                    {
                        var contour = vectorOfPoint[i];
                        var area    = CvInvoke.ContourArea(contour);
                        if (area > 100)
                        {
                            System.Drawing.Rectangle rec = CvInvoke.BoundingRectangle(contour);
                            Point p1 = new Point(rec.X, rec.Y);
                            Point p2 = new Point(rec.X + rec.Width, rec.Y + rec.Height);
                            ObjetoX = (p1.X + p2.X) / 2;
                            ObjetoY = (p1.Y + p2.Y) / 2;
                            //rect = new Rect(p1, p2);

                            Console.WriteLine($"x: {ObjetoX} y: {ObjetoY}");
                            //currentFrame.Draw(rec, new Bgr(0, double.MaxValue, 0), 3);
                        }
                    }
                    colorStream.Source = BitmapSource.Create(
                        colorFrame.Width, colorFrame.Height,
                        96,
                        96,
                        PixelFormats.Bgr32,
                        null,
                        datosColor,
                        colorFrame.Width * colorFrame.BytesPerPixel
                        );


                    //colorFrame.CopyPixelDataTo(this.colorPixels);
                    //// Write the pixel data into our bitmap
                    //this.colorBitmap.WritePixels(
                    //    new Int32Rect(0, 0, this.colorBitmap.PixelWidth, this.colorBitmap.PixelHeight),
                    //    this.colorPixels,
                    //    this.colorBitmap.PixelWidth * sizeof(int),
                    //    0);
                }
            }
        }
 private void ColorStreamReady(object sender, ColorImageFrameReadyEventArgs e)
 {
     this.helpMe.addColorStream(e.OpenColorImageFrame());
 }