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:
- 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.)
- Bei der Installation die vorgewählten Optionen belassen.
- Neues Windows Forms-Anwendung-Projekt anlegen und Timer und PictureBox in die Form setzen.
- 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();
}
}
}
}