.NET: Webcam in Windows Forms-Anwendung mit OpenCV über Emgu CV-Wrapper integrieren

Hier ein „HelloWorld“-Beispiel, wie man eine USB-Cam in einer Visual Studio Windows Forms-Anwendung in C# einbindet. Über den Emgu CV-.Net-Wrapper wird die OpenCV Library (Open Source Computer Vision) verwenden. Diese enthält unzählige Algorithmen für die Bildverarbeitung und maschinelles Sehen. Also z.B. Filter, Gesichts- und Bewegungserkennung usw. Das ganze ist auch ziemlich schnell in der Verarbeitung.

Getestet und programmiert mit Visual Studio 2008 mit SP1 (ServicePack ist wichtig) auf Windows 7 (32) und Windows XP (32).

Vorgehen:

  1. Download Emgu inkl. OpenCV: libemgucv-2.1.0.793-win32.exe von http://sourceforge.net/projects/emgucv/files/ (prinzipiell benötigt man nur die paar DLLs beim Download sind aber noch Beispiele, eine Doku usw. dabei.)
  2. Bei der Installation die vorgewählten Optionen belassen.
  3. Neues Windows Forms-Anwendung-Projekt anlegen und Timer und PictureBox in die Form setzen.
  4. Alle relevanten OpenCV- und Emgu-DLLs in den Anwendungsordner (\bin) kopieren und auf die Emgu-DLLs in Visual Studio verweisen.
using System;
using System.Drawing;
using System.Windows.Forms;

using Emgu.CV;
using Emgu.CV.Structure;

namespace WebCamSimpleTest
{
  public partial class Form1 : Form
  {
    private Capture capture;

    public Form1()
    {
      InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
      capture = new Capture(0); // 0 = get first cam
      timer1.Interval = 40;     // 40 ms = 25 fps
      timer1.Enabled = true;
    }

    private void timer1_Tick(object sender, EventArgs e)
    {
      using (Image<Bgr, byte> nextFrame = capture.QueryFrame())
      {
        pictureBox1.Image = nextFrame2.ToBitmap();
      }
    }
  }
}