2016-02-27 4 views
0

Я работал над приложением, которое генерирует и считывает (декодирует) QR-коды. В части декодирования пользователь фиксирует изображение QR-кода, и программа начнет процесс декодирования. Моя проблема: я не знаю, как я могу сфотографировать. P.S: Если вы предлагаете библиотеку, дайте ссылку, содержащую руководство по использованию этой библиотеки. Спасибо.Захват изображений с веб-камеры в C#

+1

Совет по библиотеке вне темы для SO, попробуйте выполнить поиск в Интернете для «захвата веб-камеры библиотеки C#». – CodeCaster

+0

Я искал, но не смог найти учебники –

+3

@ A.Hajeb По крайней мере, выберите некоторую библиотеку, попробуйте ее использовать, и если у вас возникнут какие-либо трудности, создайте конкретный вопрос о том, как использовать эту конкретную библиотеку. –

ответ

0

Я искал запись веб-камеры с давних времен, вы можете использовать Aforge.NET.

Вот код для того же с помощью WPF:

public partial class MainWindow : Window 
    { 
     private FilterInfoCollection VideoCaptureDevices; 
     private VideoCaptureDevice FinalVideo; 
     public VideoFileWriter writer= new VideoFileWriter(); 

     public MainWindow() 
     { 
      InitializeComponent(); 

      VideoCaptureDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice); 
      foreach (FilterInfo VideoCaptureDevice in VideoCaptureDevices) 
      { 
       comboBox1.Items.Add(VideoCaptureDevice.Name); 
      } 
      comboBox1.SelectedIndex = 0; 


     } 

     private void button1_Click(object sender, EventArgs e) 
     { 
      writer.Open(@"d:\\newVid.avi", 640, 480, 25, VideoCodec.MPEG4); 

      FinalVideo = new VideoCaptureDevice(VideoCaptureDevices[comboBox1.SelectedIndex].MonikerString); 
      FinalVideo.NewFrame += new NewFrameEventHandler(FinalVideo_NewFrame); 
      FinalVideo.Start(); 

     } 

     void FinalVideo_NewFrame(object sender, NewFrameEventArgs eventArgs) 
     { 

      System.Drawing.Image imgforms = (Bitmap)eventArgs.Frame.Clone(); 

      Bitmap bmp = (Bitmap)eventArgs.Frame.Clone(); 

      BitmapImage bi = new BitmapImage(); 
      bi.BeginInit(); 

      MemoryStream ms = new MemoryStream(); 
      imgforms.Save(ms, ImageFormat.Bmp); 
      ms.Seek(0, SeekOrigin.Begin); 

      bi.StreamSource = ms; 
      bi.EndInit();    

      //Using the freeze function to avoid cross thread operations 
      bi.Freeze(); 

      //Calling the UI thread using the Dispatcher to update the 'Image' WPF control   
      Dispatcher.BeginInvoke(new ThreadStart(delegate 
      { 
       pictureBox1.Source = bi; /*frameholder is the name of the 'Image' WPF control*/ 
      })); 

      for (int i = 0; i < 2; i++) 
      { 
       writer.WriteVideoFrame(bmp); 
      } 

     } 

     private void Stop_Click(object sender, RoutedEventArgs e) 
     { 
      writer.Close(); 
      FinalVideo.Stop(); 
      this.Close(); 
     } 

    } 

включают ниже пространств имен:

using AForge.Video; 
using AForge.Video.DirectShow; 
using AForge.Video.FFMPEG; 
using System.Drawing.Drawing2D; 
using AForge.Video.VFW; 

Вы можете установить частоту изменения кадров в соответствии с вашего удобства.

+0

снимает или снимает видео? –

+0

его захват видео, но, как вы можете видеть в коде, есть изображения, которые добавляются в качестве фрейма. вы можете выбрать любое изображение. –

+0

VS не распознает «BitmapImage bi = new BitmapImage();» –

Смежные вопросы