예제 #1
0
        //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);
        }
예제 #2
0
        //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);
            }
        }