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.