OpenCV 4.0 и 4.1 — что нового?

0bptjscasjw9uu3ow-pxkeblth0.jpeg

Мы возвращаемся к рассказу об open source библиотеке компьютерного зрения OpenCV. Проект живет и развивается, движимый командой разработчиков, работающих в компании 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 );
  • Все CUDA-модули были перенесены в репозиторий opencv_contrib;
  • Persistence API для записи и чтения данных в файл переписан на C++, старые функции были удалены;
  • Добавлен новый модуль G-API, позволяющий выстраивать графы из операций над изображениями и применять различные оптимизации на них;
  • В модуль dnn добавлена поддержка Deep Learning Deployment Toolkit (в том числе opensource-версии), включая использование Intel Movidius Neural Compute Stick или Intel Neural Compute Stick 2 на Raspberri Pi 3;
  • В модуль dnn добавлена поддержка сетей в формате ONNX (Open Neural Network Exchange);
  • В модуль dnn добавлена экспериментальная поддержка вычислений через Vulkan;
  • Добавлена реализация алгоритма real-time обработки 3D сцен/моделей KinectFusion (с оптимизацией под CPU и GPU/OpenCL);
  • В модуль objdetect добавлена поддержка детектирования и декодирования QR-кодов (декодер использует библиотеку QUirc) — этим летом в рамках летней интернатуры будет проделана работа над улучшением качества и, возможно, добавлен режим одновременного детектирования-декодирования более одного QR кода на изображении.;
  • Очень эффективный и при этом высокоточный алгоритм оптического потока DIS перенесен из opencv_contrib в модуль video главного репозитория.

OpenCV 4.1


  • Добавлены диспетчеризованные оптимизированные реализации многих алгоритмов в модулях core и imgproc;
  • Улучшения в модуле dnn:
    • Внедрена поддержка запуска сетей на Intel Neural Compute Stick 2 (с использованием DLDT);
    • Уменьшено максимальное потребление памяти, внедрена поддержка множества новых сетей из TensorFlow
  • В модуле videoio добавлена поддержка Android Media NDK API для чтения видео файлов/потоков на Android устройствах из C++ кода (полезно для тестирования алгоритмов);
  • Добавлен новый модуль для анализа качества изображений (opencv_contrib/quality). В нём реализованы как базовые алгоритмы (PSNR, SSIM), так и новые специализированные алгоритмы (вроде алгоритма оценки качества без использования исходных изображений BRISQUE — Blind/Referenceless Image Spatial Quality Evaluator);
  • Реализовано несколько новых алгоритмов: Robust local optical flow, Quasi Dense Stereo, калибрация камеры привязанной к манипулятору (Hand-Eye);

Более подробную информацию о библиотеке можно найти на изменившемся до неузнаваемости сайте проекта.

Количество патчей с 4.0.0 по 4.1.0: 462 (около 5.3 патчей в день, не считая выходные и праздники). Изменений, как вы видите, много, и они существенны. Если у вас есть вопросы по поводу внедренного функционала, либо, наоборот, не внедренного — добро пожаловать в комментарии, разработчики OpenCV постараются на них ответить.

© Habrahabr.ru