Face detection
Jump to navigation
Jump to 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)
<source lang="csharp">
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() { InitializeComponent(); }
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 = grayframe.DetectHaarCascade( haar, 1.4, 4, HAAR_DETECTION_TYPE.DO_CANNY_PRUNING, new Size(nextFrame.Width/8, nextFrame.Height/8) )[0];
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( "..\\..\\..\\..\\lib\\haarcascade_frontalface_alt2.xml"); } }
}