- Задача
- Требования
- Используемое ПО
- Библиотеки
- Используемые команды сборки
- Чек-лист задач
- Известные баги
- написать функцию, которая детектирует лица на изображении, и возвращает координаты прямоугольников, описывающих лицо (на изображении может быть несколько лиц);
- после обработки функция должна выводить нотификацию о завершении обработки файла (путь) и общем результате (сколько лиц нашлось) в консоль;
- код оформить в виде динамической библиотеки;
- написать простой функциональный тест на функцию с использованием gtest;
- создать консольное приложение для выбора входных данных и их обработки, которое будет использовать вышеописанную библиотеку (загружать динамически);
- входными данными для приложения будет путь к папке, содержащей подпапки с изображениями (вложенность папок не ограничена);
- входные данные передавать как параметры командной строки;
- приложение должно вызывать описанную функцию из библиотеки на всех найденных изображениях;
- сохранить результат работы функции в виде графических .jpg файлов, которые будут являться уменьшенной вдвое копией входных изображений, только с размытием областей с найденными лицами;
- координаты найденных лиц в исходном изображении и имя файла с результатом нужно сохранить в JSON формате в "result.json" файл в той папке, которая была установлена входным параметром как корневая.
- можно использовать только std, opencv, boost, gtest;
- подразумевается, что компилятор поддерживает стандарт не выше C++11;
- код должен быть независимым от платформы (Windows, Linux, и пр.);
- проект должен быть оформлен в CMake формате;
- результат предоставить в виде ссылки на репозиторий на GitHub, содержащий как исходный код, так и все необходимые бинарные зависимости;
- проверьте на другой ОС (например, в виртуальной машине), что проект собирается и запускается;
- все комментарии только на английском;
- все неописанные моменты - на выбор разработчика;
- будет оцениваться оформление кода, структура проекта, производительность приложения.
- Компилятор - MinGW 8.1.0
- Сборка - CMake v3.15.5
- IDE - Visual Studio Code v1.40
- Boost v1.76, static multithread release
- system
- filesystem
- container
- thread
- log
- program_options
- OpenCV v4.2.0, static release
- FFMpeg
- PNG
- TIFF
- WEBP
- GTest v1.10
bootstrap
b2 install release cxxflags=-std=c++11 link=static runtime-link=static threading=multi --with-system --with-filesystem --with-container --with-thread --with-program_options --with-log
- Функция распознавания лица
- Загрузка и проверки на валидность
- Распознавание лиц
- Изменение распознанных областей
- Сохранение измененой и уменьшенной копии
- Тесты
- Оформление в виде динамической библиотеки
- Консольное приложение
- Парсинг агрументов запуска, их проверка и нормализация
- Функция сканирования указанной директории
- Сохранение результатов распознавания в
result.json
Дополнительно:
- Общая оптимизация архитектуры и кода
- Документация
- Проверка кроссплатформенности
- Некорретный вывод путей в не-англоязычной кодировке
- При распознавании некоторых файлов всплывает
Invalid SOS parameters for sequential JPEG