OpenCV
OpenCV — свободная и мультиплатформенная библиотека для задач компьютерного зрения и анализа изображений, распространяемая по лицензии BSD и пригодная для научно-образовательного, исследовательского и коммерческого использования[1].
Библиотека была разработана компанией Intel в 2000 году для разработки приложений в области машинного зрения[1][2] и также применяется в искусственном интеллекте и машинном обучении[2].
OpenCV включает модули для обработки изображений и видео[2], работы с структурами данных, линейной алгеброй, базовой графической пользовательской оболочкой с независимыми окнами, поддержкой мыши и клавиатуры, а также содержит более 350 инструментов и алгоритмов компьютерного зрения, включая фильтры изображений, калибровку камер, распознавание объектов, структурный анализ. Обработка изображений в библиотеке происходит в режиме реального времени[2].
Библиотека реализована на языках C, C++, поддерживает встраивание в приложения на Java, Python и Visual Basic. Первая стабильная версия OpenCV 1.0 вышла в конце 2006 года, версия 2.0 — в сентябре 2009 года.
Общие сведения
| OpenCV | |
|---|---|
| Тип | библиотека |
| Авторы | Intel Corporation, Willow Garage, Itseez |
| Разработчик | Open Source Vision Fundation |
| Написана на | C, C++, Python |
| Операционная система | мультиплатформенная |
| Языки интерфейса | C, C++, Python, Java, MATLAB/Octave |
| Первый выпуск | 1999 |
| Аппаратная платформа | мультиплатформенная |
| Последняя версия | 4.9.0 (28 декабря 2023) |
| Репозиторий | github.com/opencv/opencv |
| Лицензия | BSD |
| Сайт | opencv.org |
История
Официально проект OpenCV был запущен в 1999 году как инициатива исследовательского центра Intel Research по разработке эффективных вычислительных приложений высокой производительности, в ряду проектов, связанных с трассировкой лучей и 3D-мониторами. Основной вклад в разработку внесли сотрудники Intel Россия и команда по оптимизации библиотек Intel. Изначально были сформулированы следующие цели:
- Содействовать развитию научных исследований в области компьютерного зрения, предоставив не просто открытый, но и оптимизированный код для базовых задач, пригодный для изучения и повторного использования;
- Содействовать коммерческим приложениям, основанным на компьютерном зрении, предоставив портируемый и оптимизированный код бесплатно, с лицензией, не обязывающей дальнейшее распространение в открытом виде.
Возможности
OpenCV применяется для анализа изображений и видео в реальном времени в задачах искусственного интеллекта (ИИ) и машинного обучения (ML), обеспечивая предварительную обработку изображений и видеопотоков перед подачей их на вход моделей машинного и глубокого обучения (DL)[2]. Предварительная обработка может включать изменение размеров, преобразование цветового пространства (BGR↔RGB), подавление шумов, улучшение качества (выделение признаков алгоритмами SIFT, SURF, FAST для поиска ключевых точек), обработку видеопотока в реальном времени (оптический поток), удаление фона, обнаружение объектов (например, каскады Хаара для распознавания лиц), геометрическое понимание и калибровку камеры, анализ и реконструкцию сцен (3D), применение классических алгоритмов ML (SVM, KNN)[2].
OpenCV интегрируется с библиотеками машинного обучения PyTorch и TensorFlow: тогда как последние используются для построения и обучения нейронных сетей, OpenCV обеспечивает ввод/вывод, преобразование и постобработку визуальных данных (например, отрисовка ограничивающих прямоугольников или масок сегментации на изображениях на основе работы моделей)[2].
Применение
OpenCV используется в различных задачах искусственного интеллекта и машинного обучения:
- Автономные транспортные средства: в автомобилях и в системах помощи водителю (ADAS) OpenCV применяется для предварительной обработки данных с камеры и LiDAR: обнаружения дорожной разметки, распознавания препятствий (сопоставление признаков), выделения контуров, распознавания дорожных знаков (классификация обработанных изображений), сшивки изображений в системах кругового обзора[2]. Необработанные кадры камеры корректируются (исправляется искажение, настраивается яркость) для дальнейшей передачи в YOLOv8 — модель глубокого обучения, обнаруживающую автомобили и пешеходов[2];
- Медицинская визуализация: OpenCV обрабатывает различные форматы медицинских изображений (например, DICOM), повышает контраст для поиска аномалий, сегментирует области интереса (опухоли, органы) с применением алгоритмов пороговой обработки или водораздела, выполняет регистрацию изображений, сделанных в разное время[2]. Обработанные данные далее анализируются специализированными моделями машинного обучения для диагностики (например, в радиологии — RSNA);
- Другие области: робототехника (интеграция компьютерного зрения с роботами[2]), видеонаблюдение (security alarm systems[2]), дополненная и виртуальная реальность, управление сельским хозяйством (оценка состояния растений), интерфейсы взаимодействия человека и компьютера (HCI), системы распознавания лиц, распознавание движений, мобильные роботы, реконструкция 3D-сцен; программный пакет Opentoonz использует OpenCV для ряда задач машинного зрения.
Платформы и совместимость
Структура библиотеки
- cv — основной модуль с базовыми функциями и алгоритмами компьютерного зрения;
- cvaux — экспериментальные алгоритмы компьютерного зрения;
- cxcore — работа со структурами данных и линейной алгеброй;
- highgui — пользовательский интерфейс и поддержка устройств ввода;
- ml — обработка изображений с помощью алгоритмов машинного обучения;
- dnn — обработка изображений с использованием глубокого обучения;
- ed — инструменты и методы работы со структурами данных.
Языки программирования
OpenCV написан на C++, его основной программный интерфейс (API) реализован на C++, однако по-прежнему поддерживается обширная, но менее универсальная, старая платформа, т. н. C-интерфейс. Все новые разработки и алгоритмы добавляются в C++-интерфейс. Кроме того, существуют привязки для Python (например, функции OpenCV cv.line[7], cv2.cvtcolor[8], cv2.circle[9]), Java, MATLAB/Octave. Документация по API для этих языков размещена в открытом доступе[10].
Для расширения аудитории в различных языках программирования разработаны дополнительные обёртки. C версии 3.4 в составе библиотеки появилась поддержка JavaScript в виде OpenCV.js — реализации части функциональности OpenCV для использования в веб-проектах[11].
Ограничения
Примечания
- ↑ 1 2 3 4 O que é OpenCV: Entenda a Biblioteca de Visão Computacional (порт.). Chapeco (6 августа 2024). Дата обращения: 2 июля 2025. Архивировано 2 июля 2025 года.
- ↑ 1 2 3 4 5 6 7 8 9 10 11 12 OpenCV: Biblioteca de visão computacional de código aberto (порт.). Ultralytics. Дата обращения: 2 июля 2025. Архивировано 13 августа 2025 года.
- ↑ Android port: OpenCV Experimental. Дата обращения: 2 июля 2025. Архивировано 26 ноября 2012 года.
- ↑ BlackBerry 10 (partial port): OpenCV. Дата обращения: 2 июля 2025. Архивировано 28 августа 2024 года.
- ↑ iPhone port: OpenCV for iOS. Дата обращения: 2 июля 2025. Архивировано 10 июля 2025 года.
- ↑ Maemo port: OpenCV. Дата обращения: 2 июля 2025. Архивировано 28 апреля 2025 года.
- ↑ OpenCV cv.line (11 октября 2021). Дата обращения: 2 июля 2025. Архивировано 23 февраля 2024 года.
- ↑ OpenCV cv2.cvtcolor (11 октября 2021). Дата обращения: 2 июля 2025. Архивировано 18 июля 2025 года.
- ↑ OpenCV cv2.circle (11 октября 2021). Дата обращения: 2 июля 2025. Архивировано 4 августа 2024 года.
- ↑ OpenCV C interface. Дата обращения: 2 июля 2025.
- ↑ Introduction to OpenCV.js and Tutorials. Дата обращения: 2 июля 2025. Архивировано 26 августа 2025 года.