Face detection

From Emgu CV: OpenCV in .NET (C#, VB, C++ and more)
Jump to: navigation, search

This tutorial was extracted from this link.

Notes in order to run this example:

  • Create a Windows Form Application
    • Add a PictureBox and a Timer (and Enable it)
  • Run it on a x86 system
  • Be sure you have the OpenCV relevant dlls (included with the Emgu CV download) in the folder where you code executes.
  • Adjust the path to find the Haarcascade xml (last line of the code)

using System;
using System.Windows.Forms;
using System.Drawing;
using Emgu.CV;
using Emgu.Util;
using Emgu.CV.Structure;
using Emgu.CV.CvEnum;
namespace opencvtut
    public partial class Form1 : Form
                private Capture cap;
                private HaarCascade haar;
        public Form1()
        private void timer1_Tick(object sender, EventArgs e)
                using (Image<Bgr, byte> nextFrame = cap.QueryFrame())
                        if (nextFrame != null)
                                // there's only one channel (greyscale), hence the zero index
                                //var faces = nextFrame.DetectHaarCascade(haar)[0];
                                Image<Gray, byte> grayframe = nextFrame.Convert<Gray, byte>();
                                var faces =
                                                haar, 1.4, 4,
                                                new Size(nextFrame.Width/8, nextFrame.Height/8)
                                foreach (var face in faces)
                                        nextFrame.Draw(face.rect, new Bgr(0,double.MaxValue,0), 3);
                                pictureBox1.Image = nextFrame.ToBitmap();
        private void Form1_Load(object sender, EventArgs e)
            // passing 0 gets zeroth webcam
                        cap = new Capture(0);
            // adjust path to find your xml
                        haar = new HaarCascade(