- PVSM.RU - https://www.pvsm.ru -

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

OpenCV 4.0 и 4.1 — что нового? - 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