Другое

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 и вдохновить вас на ее изучение, а возможно, на изучение машинного зрения.

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

Firebase. База данных, ее краткое описание и инструкция по настройке
Другое

Firebase. База данных, ее краткое описание и инструкция по настройке

Как устроиться программистом без опыта работы и построить карьеру?
Другое

Как устроиться программистом без опыта работы и построить карьеру?

Учет рабочего времени за компьютером: лучшие time tracking программы
Другое

Учет рабочего времени за компьютером: лучшие time tracking программы

Какой язык программирования самый универсальный: рейтинг победителей
Другое

Какой язык программирования самый универсальный: рейтинг победителей