Другое

OpenCV поиск по шаблону. Примеры кода и объяснение с комментариями

Lorem ipsum dolor

OpenCV — это популярная библиотека для компьютерного зрения. А компьютерное зрение — это целое направление в искусственном интеллекте, которое специализируется на распознавании и понимании видеоизображений и сцен. Компьютерное зрение имеет очень широкий круг применения: от поиска преступников на улице до идентификации лиц для разблокирования смартфона. Для того, чтобы компьютерное зрение было возможным, и существуют подобные библиотеки, как OpenCV, в которых собраны все необходимые для этого инструменты.

OpenCV может помочь осуществить не только поиск объектов по шаблону, но и множество других операций с графическими рисунками:

  • импортировать и просматривать изображения;
  • обрезать;
  • изменять размер;
  • поворачивать изображение;
  • размывать или сглаживать;
  • рисовать линии и прямоугольники;
  • накладывать текст на изображение;
  • распознавать лица;
  • сохранять изображение.

При этом главным моментом, почему библиотека OpenCV пользуется популярностью, является поиск объектов на изображении по заданному шаблону. Само по себе обнаружение объектов является наиболее важным и глубоким элементом компьютерного зрения. Поэтому ему уделяется особое внимание. И если бы не существовало обнаружения объектов, то не было бы и самого машинного зрения. Ведь прежде чем осуществить с изображением какие-то действия, нужно определить и идентифицировать все находящиеся на нем объекты.

 

OpenCV это поиск объектов по шаблону и не только

Данная библиотека рассчитана на язык программирования Python, но при этом она есть и для других языков. Установить ее можно на все популярные платформы:

  • Windows;
  • Linux;
  • MacOS;
  • и др.

Установить эту библиотеку на свой компьютер можно через Консоль. А использовать ее лучше с языком Питон. Чтобы ее установить, нужно ввести в Консоль следующее:

  • для Windows: $ pip install opencv-python
  • для Линукс: $ sudo apt-get install libopencv-dev python-opencv
  • для МакОС: $ brew install opencv - - with-contrib - - with-python

Описанные команды подразумевают, что у вас уже установлен Python и вы будете использовать эту библиотеку именно для Питона.

 

OpenCV: основные действия с изображениями

Самое первое и простое действие — это просмотр изображения. Для того чтобы просмотреть изображение, оно должно быть загружено на компьютер. Просмотреть изображение можно при помощи следующего кода:

import cv2

images = cv2.imread("./указываем путь /к/вашему изображению.png")

cv2.imshow("Images", images)

cv2.waitKey(0)

cv2.destroyAllWindows()

Можно кадрировать изображение, для этого используют код:

import cv2

cropped = image[15:425, 425:1980]

viewImage(cropped, "Фотография после кадрирования")

Вот это выражение: «image[15:425, 425:1980]» показывает координаты кадрирования.

Можно «размыть» или «сгладить» графический рисунок. Для этого подойдет вот такой вот скрипт:

import cv2

blurred = cv2.GaussianBlur(image, (49, 49), 0)

viewImage(blurred, "Размываемая фотография")

В этом скрипте используется операция «Размывание по Гауссу», где нужно задать 2 параметра:

  • оригинальное изображение;
  • два нечетных и неотрицательных числа, которые указывают силу сглаживания: чем выше значение числа, тем больше сила;
  • sigmaX и sigmaY, когда идентификатор обозначен 0-м, тогда эти параметры рассчитываются в автоматическом режиме.

Можно расположить текст на графическом рисунке. Для этого можно использовать вот такой вот скрипт:

import cv2

output = image.copy()

cv2.putText(output, "Текст на графическом рисунке", (2155, 4785),cv2.FONT_LIBERATION_SERIF, 14, (25, 95, 225), 35)

viewImage(output, "Графический рисунок, на котором наложен текст")

Данный код включает несколько важных параметров:

  • оригинальный рисунок;
  • текст, который нужно наложить;
  • координаты начала текстового выражения;
  • каким шрифтом изобразить текст;
  • размер букв;
  • цвет текста;
  • толщина шрифта.

 

OpenCV: поиск объектов по шаблону

Данную функцию библиотеки OpenCV хочется выделить из-за ее важности. Самый распространенный метод распознавания объектов на графических рисунках — это цветовая сегментация, которая применяет всего 2 функции для распознавания контуров и оттенков:

  • cv2.findContours;
  • cv2.drawContours.

Она определяет контуры и цветовую схему изображенных объектов, потом сравнивает эти значения с объектами из библиотеки. Результатом будет выдан объект из библиотеки, с которым будет наибольший процент сходства у объекта на изображении. Чтобы «сходство» и результаты были точнее, нужно будет постоянно обучать программу.

Помимо этой функции, есть еще множество других алгоритмов и методов поиска объектов, это:

  • R-CNN;
  • Fast-RCNN;
  • Faster-RCNN,
  • RetinaNet;
  • SSD;
  • YOLO;
  • и др.

В принципе невозможно в рамках одной статьи привести код по какому-либо из алгоритмов, чтобы показать, как осуществить поиск объектов на графическом рисунке. Потому что любой из этих алгоритмов требует глубокого знания фреймворков математического обучения и понимания того, что такое машинное обучение.

Выводы

OpenCV — это одна из лучших библиотек для компьютерного видения. С ее возможностями можно не только осуществлять поиск объектов по шаблону, но и выполнять более простые операции с графическими рисунками.

Для того чтобы воспользоваться функцией поиска объектов по шаблону, нужно глубже изучать OpenCV и в общем технологию машинного зрения. Цель нашей статьи — лишь слегка приоткрыть возможности библиотеки OpenCV и вдохновить вас на ее изучение, а возможно, на изучение машинного зрения.

Схожие статьи

Ядро операционной системы: что собой представляет и что входит в состав
Другое

Ядро операционной системы: что собой представляет и что входит в состав

Все возможности Facebook для разработчиков
Другое

Все возможности Facebook для разработчиков

Что такое роутинг или маршрутизация простыми словами для чайников
Другое

Что такое роутинг или маршрутизация простыми словами для чайников

Мобильные приложения – конкурентное преимущество в борьбе за покупателя
Другое

Мобильные приложения – конкурентное преимущество в борьбе за покупателя

×