Python Cv2 Erode: Как размывать изображения с помощью OpenCV
OpenCV-Python - это библиотека Python, специально предназначенная для решения проблем компьютерного зрения. Морфологические преобразования - это несколько простых операций, основанных на форме изображения. Обычно это выполняется на двоичных изображениях. Есть два основных морфологических преобразования.
- Image Dilate
- Image Erosion
OpenCV-Python предоставляет модуль cv2, который поддерживает следующие две функции.
- cv2.dilate()
- cv2.erode()
Python cv2 erode()
Чтобы выполнить эрозию изображений, используйте метод cv2.erode(). Erode() обычно выполняется для двоичных изображений. Метод erode() требует двух входных данных; один - входное изображение, а второй - элемент структурирования или ядро, которое определяет характер операции.
Синтаксис
cv2.erode(src, kernel[, dst[, anchor[, iterations[, borderType[, borderValue]]]]])
Параметры
- image: это обязательный параметр и исходное изображение, на котором нам нужно выполнить dilation.
- kernel: Обязательный параметр - матрица, с которой свернуто изображение.
- dst: это выходное изображение того же размера и типа, что и изображение src .
- anchor: это переменная целочисленного типа, представляющая точку привязки, и ее значение по умолчанию равно (-1, -1), что означает, что привязка находится в центре ядра.
- iterations: это необязательный параметр, который требует нескольких итераций.
- borderType: показывает, какую границу нужно добавить. Он определяется такими флагами, как
cv2.BORDER_CONSTANT
,cv2.BORDER_REFLECT
и т.д. - borderValue: это значение границы в случае постоянной границы.
Возвращаемое значение
Он возвращает размытое изображение.
пример
import numpy as np
import cv2
img = cv2.imread('data.png', 1)
cv2.imshow('Original', img)
kernel = np.ones((5, 5), 'uint8')
erode_img = cv2.erode(img, kernel, iterations=1)
cv2.imshow('Eroded Image', erode_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
При эрозии ядро скользит по изображению (как это происходит при двумерной свертке).
Пиксель во входном изображении (1 или 0) будет считаться 1 только в том случае, если все пиксели в ядре равны 1; в противном случае он разрушается (обнуляется).
Так что происходит то, что все пиксели около границы будут отброшены в зависимости от размера ядра. Таким образом, толщина или размер объекта переднего плана уменьшается, или уменьшается белая область на изображении.
Это полезно для удаления небольших белых шумов, отделения двух связанных объектов и т.д.
Посмотрим на другой пример.
import numpy as np
import cv2
img = cv2.imread('data.png', 1)
cv2.imshow('Original', img)
kernel = np.ones((6, 6), 'uint8')
erode_img = cv2.erode(img, kernel, cv2.BORDER_REFLECT, iterations=1)
cv2.imshow('Eroded Image', erode_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
Это все для метода Python cv2 erode().