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(); } } } }