Хранение изображений на компьютере с использованием EmguCV - PullRequest
0 голосов
/ 01 марта 2012

Я использую следующий код в WPF для отображения изображения в веб-камере с помощью библиотеки EmguCv. Теперь я хочу сохранить изображение на моем компьютере. У кого-нибудь из вас есть идеи, как это сделать?Какой метод должен прийти в button1_click

        private Capture capture;
       private DispatcherTimer timer;

    #region ImageConverter

    // Converting EmguCV image to WPF image
    [DllImport("gdi32")]
    private static extern int DeleteObject(IntPtr o);

    public static BitmapSource ToBitmapSource(Emgu.CV.IImage image)
    {
        using (System.Drawing.Bitmap source = image.Bitmap)
        {
            IntPtr ptr = source.GetHbitmap();
            BitmapSource bs = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(ptr, IntPtr.Zero, Int32Rect.Empty, System.Windows.Media.Imaging.BitmapSizeOptions.FromEmptyOptions());
            DeleteObject(ptr);
            return bs;
        }
    }

    #endregion

    private void Window_Loaded(object sender, RoutedEventArgs e)
    {
        capture = new Capture();
        // capture.FlipHorizontal = true;
        timer = new DispatcherTimer();
        timer.Interval = new TimeSpan(150);
        timer.Tick += new EventHandler(timer_Tick);
        timer.Start();

    }
    void timer_Tick(object sender, EventArgs e)
    {
        using (Image<Bgr, byte> Frame = capture.QueryFrame())
        {
            if (Frame != null)
            {
                webcam.Source = ToBitmapSource(Frame);

            }
        }
    }



    private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
    {

        if (capture != null)
        {
            capture.Dispose();
        }

    }

    private void button1_Click(object sender, RoutedEventArgs e)
    {

    }
}
}

1 Ответ

1 голос
/ 16 марта 2012
Image<Bgr, byte> frame = capture.QueryFrame());
frame.Save(filename);
...