Цель данной работы - получить представление о задаче оптимизации производительности программного кода.
Данный репозиторий содержит:
include
,src
-- директории содержащие реализацию фильтра "старое кино".testdata
-- директория с тестовыми видео и масками необходимыми для работы фильтра.sample
-- директория с С++-приложением, осуществляющим обработку видео, производительность которого необходимо улучшить..gitignore
-- список файлов, находящихся в директории проекта, но игнорируемые git'ом..travis.yml
-- конфигурационный файл для системы автоматического тестирования Travis-CI.CMakeLists.txt
-- общий файл для сборки проекта с помощью CMake.README.md
-- информация о проекте, которую вы сейчас читаете.
Основные задачи:
- Оценить производительность приложения.
- Проанализировать код, найти узкие места (bottlenecks).
- Добиться более высокой производительности, не изменяя результат работы приложения.
- Добавить режим видео конвертера - входной видео файл преобразуется в выходной, без визуализации.
- Добиться максимальной скорости преобразования видео в новом режиме.
Дополнительные задачи:
- Реализовать фильтр "старое кино" без использования функций библиотеки OpenCV (кроме необходимых для доступа к элементам изображения).
-
Сделать форк upstream-репозитория, затем клонировать origin к себе на локальную машину. Для инструкций можно обратиться к разделу Общие инструкции по работе с Git в практической работе 1.
-
Собрать проект с помощью CMake и MS VS (см. раздел Сборка проекта с помощью CMake и MS VS в практической работе 1). В результате успешной сборки в build-каталоге в директории
bin
должен появиться исполняемый файлretro_sample.exe
-
Запустить приложение используя видео камеру:
./bin/retro_sample.exe --border testdata/fuzzy_border.png --scratches testdata/scratches.png --camera
или тестовое видео
./bin/retro_sample.exe --border testdata/fuzzy_border.png --scratches testdata/scratches.png --video testdata/05.avi
-
Решить задачи из списков основных и дополнительных задач.