//public void OnOpenCVMatImageReceived(object sender, OpenCvMatImageArgs e) //{ // OpenCvMatImageArgsLog data = new OpenCvMatImageArgsLog(); // data.Mat = e.Mat; // data.Descriptor = e.Descriptor; // data.InstantInMs = DateTime.Now.Subtract(initialDateTime).TotalMilliseconds; // string json = JsonConvert.SerializeObject(data); // Log(json); //} public void OnBitmapImageReceived(object sender, BitmapImageArgs e) { BitmapDataPanoramaArgsLog data = new BitmapDataPanoramaArgsLog(); Bitmap originalImage = e.Bitmap; BitmapData bmpDataOriginal = originalImage.LockBits(new Rectangle(0, 0, originalImage.Width, originalImage.Height), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb); int bytesPerPixel = 0; if (bmpDataOriginal.PixelFormat == PixelFormat.Format24bppRgb) { bytesPerPixel = 3; //TODO modif si canal alpha } else if (bmpDataOriginal.PixelFormat == PixelFormat.Format32bppArgb) { bytesPerPixel = 4; //TODO modif si canal alpha } else { Console.WriteLine("Pb de log dans Log Recorder : PixelFormat anormal"); } byte[] bmpData = new byte[bmpDataOriginal.Width * bmpDataOriginal.Height * bytesPerPixel]; System.Runtime.InteropServices.Marshal.Copy(bmpDataOriginal.Scan0, bmpData, 0, bmpDataOriginal.Width * bmpDataOriginal.Height * bytesPerPixel); originalImage.UnlockBits(bmpDataOriginal); data.Descriptor = e.Descriptor; data.BitmapData = bmpDataOriginal; data.Data = bmpData; data.InstantInMs = DateTime.Now.Subtract(initialDateTime).TotalMilliseconds; //string json = JsonConvert.SerializeObject(data); //Log(json); }
//public void OnSaveCVMatImage(object sender, OpenCvMatImageArgs e) //{ // subdivision++; // if (subdivision == 120) // { // subdivision = 0; // string fileName = "Images/Omni_" + DateTime.Now.ToString("yyyy-MM-dd_HH-mm-ss-fff") + ".jpg"; // // Create a Bitmap object based on a BMP file. // myBitmap = new Bitmap(e.Mat.Bitmap); // // Get an ImageCodecInfo object that represents the JPEG codec. // myImageCodecInfo = GetEncoderInfo("image/jpeg"); // // Create an Encoder object based on the GUID // // for the Quality parameter category. // myEncoder = Encoder.Quality; // // Create an EncoderParameters object. // // An EncoderParameters object has an array of EncoderParameter // // objects. In this case, there is only one // // EncoderParameter object in the array. // myEncoderParameters = new EncoderParameters(1); // // Save the bitmap as a JPEG file with quality level 25. // myEncoderParameter = new EncoderParameter(myEncoder, 80L); // myEncoderParameters.Param[0] = myEncoderParameter; // myBitmap.Save(fileName, myImageCodecInfo, myEncoderParameters); // } //} public void OnSaveBitmapImage(object sender, BitmapImageArgs e) { subdivision++; if (subdivision == 120) { subdivision = 0; string fileName = "Images/Omni_" + DateTime.Now.ToString("yyyy-MM-dd_HH-mm-ss-fff") + ".jpg"; // Create a Bitmap object based on a BMP file. // myBitmap = new Bitmap(e.Mat.Bitmap); // Get an ImageCodecInfo object that represents the JPEG codec. myImageCodecInfo = GetEncoderInfo("image/jpeg"); // Create an Encoder object based on the GUID // for the Quality parameter category. myEncoder = Encoder.Quality; // Create an EncoderParameters object. // An EncoderParameters object has an array of EncoderParameter // objects. In this case, there is only one // EncoderParameter object in the array. myEncoderParameters = new EncoderParameters(1); // Save the bitmap as a JPEG file with quality level 25. myEncoderParameter = new EncoderParameter(myEncoder, 80L); myEncoderParameters.Param[0] = myEncoderParameter; e.Bitmap.Save(fileName, myImageCodecInfo, myEncoderParameters); } }