В задаче распознавания лиц нам поможет фреймворк Accord.NET.
Создадим простое консольное приложение. При помощи NuGet необходимо будет установить библиотеку Accord.Vision. При установке подтянутся все зависимости.
Фото, на котором будем тестировать приложение:
Программный код:
using Accord.Imaging.Filters; using Accord.Vision.Detection; using Accord.Vision.Detection.Cascades; using System.Drawing; namespace Progtask { class Program { static void Main(string[] args) { const string pathInputImage = "input.jpg"; const string pathOutputImage = "output.jpg"; // загружаем изображение Bitmap image = new Bitmap(pathInputImage); HaarObjectDetector faceDetector = new HaarObjectDetector( // указываем, что нужно искать лица new FaceHaarCascade(), // устанавливаем возможный минимальный размер minSize: 25, // устанавливаем режим поиска, при котором если область // обнаружена, то поиск во внутренних и пересекающихся // областях производиться не будет. Это позволяет сэкономить время // работы, но если лица находятся очень близко друг от друга, то // возможно потребуется другой режим searchMode: ObjectDetectorSearchMode.NoOverlap); // создаём объект, который нужен для выделения объектов на изображении RectanglesMarker facesMarker = new RectanglesMarker(Color.Red); // распознаём лица facesMarker.Rectangles = faceDetector.ProcessFrame(image); // выделяем лица на изображении facesMarker.ApplyInPlace(image); // сохраняем изображение image.Save(pathOutputImage); } } }
Результат: