Введение
Библиотека компьютерного зрения
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 – профессиональное консультационное подразделение. Команда разработчиков предоставляет консультационные услуги и разрабатывает решения в области компьютерного зрения, машинного обучения и искусственного интеллекта.
Advance vision research by providing not only open but also optimized code for basic vision infrastructure. No more reinventing the wheel. Disseminate vision knowledge by providing a common infrastructure that developers could build on, so that code would be more readily readable and transferable. Advance vision based commercial applications by making portable, performance optimized code available for free – with a license that did not require code to be open or free itself. The first alpha version of OpenCV was released to the public at the IEEE Conference on Computer Vision and Pattern Recognition in 2000, and five betas were released between 2001 and 2005. The first 1.0 version was released in 2006. A version 1.1 "pre release" was released in October 2008. The second major release of the OpenCV was in October 2009. OpenCV 2 includes major changes to the C++ interface, aiming at easier, more type safe patterns, new functions, and better implementations for existing ones in terms of performance (especially on multi core systems). Official releases now occur every six months and development is now done by an independent Russian team supported by commercial corporations. In August 2012, support for OpenCV was taken over by a non profit foundation OpenCV. org, which maintains a developer and user site. In May 2016, Intel signed an agreement to acquire Itseez, a leading developer of OpenCV. In July 2020, OpenCV announced and began a Kickstarter campaign for the OpenCV AI Kit, a series of hardware modules and additions to OpenCV supporting Spatial AI. In August 2020, OpenCV launched OpenCV. ai – the professional consulting arm. The team of developers provides consulting services and delivers Computer Vision, Machine Learning, and Artificial intelligence solutions.
Язык программирования
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.