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 ); } }
void ColorFrameReady(object sender, ColorImageFrameReadyEventArgs e) { this.rgbImage.Source = e.OpenColorImageFrame().ToBitmapSource(); }
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(); }
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 ); } }
private void sensor_ColorFrameReady(object sender, ColorImageFrameReadyEventArgs e) { handleColorImageFrame(e.OpenColorImageFrame()); }
private void kinect_ColorFrameReady(object sender, ColorImageFrameReadyEventArgs e) { imagemCamera.Source = ObterImagemSensorRGB(e.OpenColorImageFrame()); }
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()); }