Определение лица из потока WEB-камеры



Для того чтобы определить лицо на видео с WEB-камеры или изображении Вам понадобится использовать библиотеки Emgu CV, как вариант OpenCV на .NET.

Качаем отсюда.

Далее необходимо создать новый проект C# и подключить требуемые сборки Emgu CV.



using System.Windows.Forms;
using Emgu.CV;
using Emgu.CV.UI;
using Emgu.Util;
using Emgu.CV.CvEnum;
using Emgu.CV.Structure;


namespace OpenCV_Test
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        Capture myCapture = new Capture();

        private void Form1_Load(object sender, EventArgs e)
        {
            Application.Idle += new EventHandler(Application_Idle);
        }

        void Application_Idle(object sender, EventArgs e)
        {
            HaarCascade cascade = new HaarCascade("haarcascade_frontalface_alt.xml");
            Image<Bgr, Byte> image = myCapture.QueryFrame();
            Image<Gray, Byte> grayImage = image.Convert<Gray, Byte>();
            //Ищем признаки лица
            var Faces = grayImage.DetectHaarCascade(cascade)[0];
            foreach (var face in Faces)
            {
                //Eсли есть - обводим его. Первый аргумент - координаты, второй - цвет линии, третий - толщина
                image.Draw(face.rect, new Bgr(255, 255, 255), 10);
                
            }
            //Ищем признаки глаз
            //var Eyes = grayImage.DetectHaarCascade(cascadeEye)[0];
            //foreach (var eye in Eyes)
            //{
                //Обводим
                //image.Draw(eye.rect, new Bgr(0, 0, 255), 3);
            //}
            //Выводим обработаное приложение
            imageBox1.Image = image;
        }

    }
}