OpenCV 4.0 и 4.1 — что нового?
Мы возвращаемся [1] к рассказу об open source библиотеке компьютерного зрения OpenCV [2]. Проект живет и развивается, движимый командой разработчиков, работающих в компании Intel, а также неугасающей поддержкой community. В конце 2018 года увидел свет первый стабильный релиз из ветки 4.х, а буквально месяц назад вышло новое обновление — версия 4.1. Мы попросили авторов библиотеки перечислить кратко, что нового привнесли эти две версии в функционал OpenCV.
OpenCV 4.0
Выход OpenCV 4.0 завершил жизненный цикл версии 3.x — для исправления ошибок и незначительных доработок была создана ветка 3.4, от которой будут создаваться уже минорные 3.4.x версии (по аналогии с 2.4.x).
OpenCV 4.0 final
- OpenCV теперь является C++11 библиотекой и требует C++11-совместимого компилятора;
- Удалены многие функции устаревшего C API (из OpenCV 1.0), старые константы и объявления функций вынесены в отдельные заголовочные файлы (imgproc_c.h) и теперь должны включаться пользователем явно (#include <opencv/imgproc/imgproc_c.h>);
- Все CUDA-модули были перенесены [3] в репозиторий opencv_contrib;
- Persistence API для записи и чтения данных в файл переписан на C++, старые функции были удалены;
- Добавлен новый модуль G-API, позволяющий выстраивать графы из операций над изображениями и применять различные оптимизации на них;
- В модуль dnn добавлена поддержка Deep Learning Deployment Toolkit (в том числе opensource-версии [4]), включая использование Intel Movidius Neural Compute Stick [5] или Intel Neural Compute Stick 2 [6] на Raspberri Pi 3 [7];
- В модуль dnn добавлена поддержка сетей в формате ONNX [8] (Open Neural Network Exchange);
- В модуль dnn добавлена экспериментальная поддержка вычислений через Vulkan [9];
- Добавлена реализация алгоритма real-time обработки 3D сцен/моделей KinectFusion [10] (с оптимизацией под CPU и GPU/OpenCL);
- В модуль objdetect добавлена поддержка детектирования и декодирования QR-кодов (декодер использует библиотеку QUirc) — этим летом в рамках летней интернатуры [11] будет проделана работа над улучшением качества и, возможно, добавлен режим одновременного детектирования-декодирования более одного QR кода на изображении.;
- Очень эффективный и при этом высокоточный алгоритм оптического потока DIS перенесен из opencv_contrib в модуль video главного репозитория.
OpenCV 4.1
- Добавлены диспетчеризованные оптимизированные реализации многих алгоритмов в модулях core и imgproc;
- Улучшения в модуле dnn:
- Внедрена поддержка запуска сетей на Intel Neural Compute Stick 2 (с использованием DLDT);
- Уменьшено максимальное потребление памяти, внедрена поддержка множества новых сетей из TensorFlow
- В модуле videoio добавлена поддержка Android Media NDK API [12] для чтения видео файлов/потоков на Android устройствах из C++ кода (полезно для тестирования алгоритмов);
- Добавлен новый модуль для анализа качества изображений (opencv_contrib/quality). В нём реализованы как базовые алгоритмы (PSNR, SSIM), так и новые специализированные алгоритмы (вроде алгоритма оценки качества без использования исходных изображений BRISQUE — Blind/Referenceless Image Spatial Quality Evaluator);
- Реализовано несколько новых алгоритмов: Robust local optical flow, Quasi Dense Stereo, калибрация камеры привязанной к манипулятору (Hand-Eye);
Более подробную информацию о библиотеке можно найти на изменившемся до неузнаваемости сайте проекта [2].
Количество патчей с 4.0.0 по 4.1.0: 462 (около 5.3 патчей в день, не считая выходные и праздники). Изменений, как вы видите, много, и они существенны. Если у вас есть вопросы по поводу внедренного функционала, либо, наоборот, не внедренного — добро пожаловать в комментарии, разработчики OpenCV постараются на них ответить.
Автор: saul
Источник [13]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/open-source/318627
Ссылки в тексте:
[1] возвращаемся: https://habr.com/ru/company/intel/blog/437600/
[2] OpenCV: https://opencv.org
[3] перенесены: https://github.com/opencv/opencv_contrib/pull/1781
[4] opensource-версии: https://github.com/opencv/dldt
[5] Intel Movidius Neural Compute Stick: https://habr.com/ru/company/intel/blog/405449/
[6] Intel Neural Compute Stick 2: https://habr.com/ru/company/intel/blog/430492/
[7] Raspberri Pi 3: https://habr.com/ru/post/436744/
[8] ONNX: https://onnx.ai/https://github.com/onnx
[9] Vulkan: https://www.khronos.org/vulkan/
[10] KinectFusion: https://www.microsoft.com/en-us/research/project/kinectfusion-project-page/
[11] летней интернатуры: https://habr.com/ru/company/intel/blog/447338/
[12] Android Media NDK API: https://developer.android.com/ndk/reference/group/media
[13] Источник: https://habr.com/ru/post/452790/?utm_campaign=452790
Нажмите здесь для печати.