C# 10.10.2018 admin No comments

Распознавание лиц в C#

В задаче распознавания лиц нам поможет фреймворк 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);
        }
    }
}

Результат:


1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (4 оценок, среднее: 4,00 из 5)
Загрузка...