DevGang
Авторизоваться

Python Cv2 Dilate: Расширение изображений с использованием OpenCV 

Расширение и эрозия - две основные операции с изображениями в области математической морфологии. Расширение применяется к двоичным изображениям. Основным эффектом расширения двоичного изображения является постоянное увеличение границ областей пикселей переднего плана (например, обычно белых пикселей). Таким образом, области пикселей переднего плана увеличиваются в размере, а дыры в этих областях становятся меньше.

Python cv2 dilate

Чтобы применить морфологический фильтр к изображениям в Python с помощью OpenCV, используйте метод cv2.dilate(). Метод dilate() принимает два входных параметра, один из которых является нашим входным изображением; второй называется структурирующим элементом или ядром, которое определяет характер операции. Расширение изображения Увеличивает область объекта. См. Следующий синтаксис метода cv2.dilate().

Синтаксис

cv2.dilate(src, kernel[, anchor[, iterations[, borderType[, borderValue]]]])

Параметры

Функция dilate() принимает следующие параметры.

  1. image: это обязательный параметр и исходное изображение, на котором нам нужно выполнить расширение.
  2. kernel: Обязательный параметр - матрица, с которой свернуто изображение.
  3. dst: это выходное изображение того же размера и типа, что и изображение src.
  4. anchor: это переменная целочисленного типа, представляющая точку привязки, и ее значение по умолчанию равно (-1, -1), что означает, что привязка находится в центре ядра.
  5. borderType: показывает, какую границу нужно добавить. Он определяется такими флагами, как cv2.BORDER_CONSTANT, cv2.BORDER_REFLECT и т.д.
  6. iterations: это необязательный параметр, который требует нескольких итераций.
  7. borderValue:  это значение границы в случае постоянной границы.

Расширение увеличивает белую область на изображении или размер объекта переднего плана.

Пример

app.py
import numpy as np
import cv2

img = cv2.imread('data.png', 1)
cv2.imshow('Original', img)

kernel = np.ones((5, 5), 'uint8')

dilate_img = cv2.dilate(img, kernel, iterations=1)
cv2.imshow('Dilated Image', dilate_img)
cv2.waitKey(0)
cv2.destroyAllWindows()

В этом примере сначала мы импортировали модули cv2 и numpy.

Затем мы читаем изображение с помощью метода imread().

На следующем шаге мы определили ядро ​​для расширения. Мы использовали функцию np.ones() для определения матрицы ядра. Ядро - это набор координат, также известный как элемент структурирования.

Затем мы использовали функцию cv2.dilate() и передали три аргумента: изображение, ядро и итерации. В этом примере мы берем итерацию = 1.

На последних шагах мы вывели расширенное изображение.

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

Источник:

#Python
Комментарии
Чтобы оставить комментарий, необходимо авторизоваться

Присоединяйся в тусовку

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

Попробовать

Оплатив хостинг 25$ в подарок вы получите 100$ на счет

Получить