OpenCV - Обзор
OpenCV - это кроссплатформенная библиотека, с помощью которой мы можем разрабатывать в реальном времени computer vision applications. В основном он фокусируется на обработке изображений, захвате и анализе видео, включая такие функции, как обнаружение лиц и обнаружение объектов.
Начнем главу с определения термина «компьютерное зрение».
Компьютерное зрение
Компьютерное зрение можно определить как дисциплину, которая объясняет, как реконструировать, прервать и понять трехмерную сцену из ее двухмерных изображений с точки зрения свойств структуры, присутствующей в сцене. Он занимается моделированием и воспроизведением человеческого зрения с помощью компьютерного программного обеспечения и оборудования.
Компьютерное зрение существенно пересекается со следующими полями -
Image Processing - Он фокусируется на манипулировании изображениями.
Pattern Recognition - В нем объясняются различные методы классификации паттернов.
Photogrammetry - Это связано с получением точных измерений по изображениям.
Компьютерное зрение против обработки изображений
Image processingзанимается преобразованием изображения в изображение. Входом и выходом обработки изображения являются изображения.
Computer visionэто построение явных, содержательных описаний физических объектов на основе их изображений. Результатом компьютерного зрения является описание или интерпретация структур в трехмерной сцене.
Приложения компьютерного зрения
Здесь мы перечислили некоторые из основных областей, в которых широко используется компьютерное зрение.
Применение робототехники
Локализация - автоматическое определение местоположения робота
Navigation
Избегание препятствий
Сборка (врезка, сварка, покраска)
Манипуляции (например, робот-манипулятор PUMA)
Human Robot Interaction (HRI) - Интеллектуальная робототехника для взаимодействия с людьми и обслуживания людей
Применение в медицине
- Классификация и обнаружение (например, классификация поражения или клеток и обнаружение опухоли)
- 2D / 3D сегментация
- 3D-реконструкция человеческого органа (МРТ или УЗИ)
- Робототехническая хирургия под контролем зрения
Приложение для промышленной автоматизации
- Производственный контроль (обнаружение дефектов)
- Assembly
- Считывание штрих-кода и этикеток на упаковке
- Сортировка объектов
- Понимание документа (например, OCR)
Приложение безопасности
Биометрия (радужная оболочка глаза, отпечатки пальцев, распознавание лиц)
Наблюдение - обнаружение определенных подозрительных действий или поведения
Транспортное приложение
- Автономный автомобиль
- Безопасность, например, мониторинг бдительности водителя
Особенности библиотеки OpenCV
Используя библиотеку OpenCV, вы можете -
Чтение и запись изображений
Снимайте и сохраняйте видео
Обрабатывать изображения (фильтровать, преобразовывать)
Выполнить обнаружение функции
Обнаруживайте определенные объекты, такие как лица, глаза, автомобили, на видео или изображениях.
Анализируйте видео, т. Е. Оценивайте движение в нем, вычтите фон и отслеживайте объекты в нем.
OpenCV изначально разрабатывался на C ++. В дополнение к этому были предоставлены привязки Python и Java. OpenCV работает в различных операционных системах, таких как Windows, Linux, OSx, FreeBSD, Net BSD, Open BSD и т. Д.
В этом руководстве объясняются концепции OpenCV на примерах с использованием привязок Java.
Модули библиотеки OpenCV
Ниже приведены основные библиотечные модули библиотеки OpenCV.
Основная функциональность
Этот модуль охватывает основные структуры данных, такие как Scalar, Point, Range и т. Д., Которые используются для создания приложений OpenCV. В дополнение к ним он также включает многомерный массивMat, который используется для хранения изображений. В библиотеке Java OpenCV этот модуль включен как пакет с именемorg.opencv.core.
Обработка изображения
Этот модуль охватывает различные операции обработки изображений, такие как фильтрация изображений, преобразования геометрических изображений, преобразование цветового пространства, гистограммы и т. Д. В библиотеке Java OpenCV этот модуль включен в виде пакета с именем org.opencv.imgproc.
видео
Этот модуль охватывает такие концепции видеоанализа, как оценка движения, вычитание фона и отслеживание объектов. В библиотеке Java OpenCV этот модуль включен как пакет с именемorg.opencv.video.
Видео ввод / вывод
Этот модуль объясняет захват видео и видеокодеки с использованием библиотеки OpenCV. В библиотеке Java OpenCV этот модуль включен как пакет с именемorg.opencv.videoio.
calib3d
Этот модуль включает в себя алгоритмы, касающиеся основных алгоритмов геометрии с несколькими ракурсами, калибровки одиночной и стереокамеры, оценки положения объекта, стереосоответствия и элементов трехмерной реконструкции. В библиотеке Java OpenCV этот модуль включен как пакет с именемorg.opencv.calib3d.
features2d
Этот модуль включает в себя концепции обнаружения и описания функций. В библиотеке Java OpenCV этот модуль включен как пакет с именемorg.opencv.features2d.
Objdetect
Этот модуль включает обнаружение объектов и экземпляров предопределенных классов, таких как лица, глаза, кружки, люди, автомобили и т. Д. В библиотеке Java OpenCV этот модуль включен как пакет с именем org.opencv.objdetect.
Highgui
Это простой в использовании интерфейс с простыми возможностями пользовательского интерфейса. В Java-библиотеке OpenCV функции этого модуля включены в два разных пакета, а именно:org.opencv.imgcodecs и org.opencv.videoio.
Краткая история OpenCV
OpenCV изначально был исследовательской инициативой Intel для разработки приложений с интенсивным использованием ЦП. Официально он был запущен в 1999 году.
- В 2006 году была выпущена его первая основная версия OpenCV 1.0.
- В октябре 2009 года была выпущена вторая основная версия OpenCV 2.
- В августе 2012 года OpenCV была захвачена некоммерческой организацией OpenCV.org.