Введение

Библиотека компьютерного зрения

OpenCV (Open Source Computer Vision Library) — это библиотека программных функций, предназначенная главным образом для компьютерного зрения в реальном времени. Первоначально разработанная компанией Intel, впоследствии она поддерживалась Willow Garage, а затем Itseez (которая позже была приобретена Intel). Библиотека является кроссплатформенной и распространяется как свободное программное обеспечение с открытым исходным кодом под лицензией Apache 2. Начиная с 2011 года, OpenCV поддерживает GPU-ускорение для операций в реальном времени.

История

Официально запущенный в 1999 году проект OpenCV первоначально являлся инициативой Intel Research, направленной на развитие ресурсоемких приложений, использующих центральный процессор, и входил в серию проектов, включающих трассировку лучей в реальном времени и 3D-дисплейные стены. Основными участниками проекта были несколько экспертов по оптимизации из Intel Russia, а также команда Performance Library Intel. В первые годы существования OpenCV цели проекта определялись следующим образом:
Содействие развитию исследований в области компьютерного зрения путем предоставления не только открытого, но и оптимизированного кода для базовой инфраструктуры. Больше не нужно изобретать велосипед. Распространение знаний в области компьютерного зрения, предоставляя общую инфраструктуру, на которой разработчики могли бы строить свои проекты, чтобы код был более понятным и переносимым. Развитие коммерческих приложений на основе компьютерного зрения, предоставляя бесплатный, переносимый и оптимизированный по производительности код – с лицензией, не требующей открытости или бесплатности самого кода. Первая альфа-версия OpenCV была представлена публике на конференции IEEE по компьютерному зрению и распознаванию образов в 2000 году, а между 2001 и 2005 годами было выпущено пять бета-версий. Первая версия 1.0 была выпущена в 2006 году. Версия 1.1 "предварительный релиз" вышла в октябре 2008 года. Второй основной релиз OpenCV состоялся в октябре 2009 года. OpenCV 2 включает в себя существенные изменения в интерфейсе C++, направленные на упрощение, повышение типобезопасности, добавление новых функций и улучшение производительности существующих (особенно на многоядерных системах). Официальные релизы теперь выходят каждые шесть месяцев, а разработка ведется независимой российской командой при поддержке коммерческих корпораций. В августе 2012 года поддержку OpenCV взял на себя некоммерческий фонд OpenCV.org, который поддерживает сайт для разработчиков и пользователей. В мае 2016 года Intel заключила соглашение о приобретении Itseez, ведущего разработчика OpenCV. В июле 2020 года OpenCV объявила о запуске и начала кампанию на Kickstarter для OpenCV AI Kit – серии аппаратных модулей и дополнений к OpenCV, поддерживающих пространственный ИИ. В августе 2020 года OpenCV запустила OpenCV.ai – профессиональное консультационное подразделение. Команда разработчиков предоставляет консультационные услуги и разрабатывает решения в области компьютерного зрения, машинного обучения и искусственного интеллекта.

Язык программирования

OpenCV написан на языке программирования C++, как и его основной интерфейс, но при этом сохраняет менее полный, хотя и достаточно обширный, старый интерфейс на C. Все новые разработки и алгоритмы реализуются в интерфейсе C++. Существуют привязки для языков Python, Java и MATLAB/Octave. Документация по интерфейсу программирования приложений (API) для этих привязок доступна в онлайн-документации. Для привлечения более широкой аудитории были разработаны оберточные библиотеки для различных языков. В версии 3.4 привязки JavaScript для выбранного подмножества функций OpenCV были выпущены как OpenCV.js для использования на веб-платформах.

Ускорение оборудования

Если библиотека обнаружит на системе интегрированные примитивы производительности Intel, она будет использовать эти проприетарные оптимизированные подпрограммы для ускорения работы. Разработка интерфейса графического процессора (GPU) на основе архитектуры Compute Unified Device Architecture (CUDA) ведется с сентября 2010 года. Разработка интерфейса GPU на основе OpenCL ведется с октября 2012 года, документацию для версии 2.4.13.3 можно найти на сайте docs.opencv.org.

Поддержка операционной системы

OpenCV работает на настольных операционных системах: Windows, Linux, macOS, FreeBSD, NetBSD и OpenBSD, а также на мобильных операционных системах: Android, iOS, Maemo, BlackBerry 10 и QNX. Пользователи могут загрузить официальные релизы с SourceForge или получить последние исходные коды с GitHub. OpenCV использует CMake.