Home >Backend Development >Python Tutorial >What is the operation method of morphology in Python+OpenCV

What is the operation method of morphology in Python+OpenCV

WBOY
WBOYforward
2023-05-28 15:16:061448browse

1. Corrosion and expansion

1.1 Corrosion operation

import cv2
import numpy as np

img = cv2.imread('DataPreprocessing/img/dige.png')

cv2.imshow("img", img)
cv2.waitKey(0)
cv2.destroyAllWindows()

dige.png original picture 1 display (Note: If you don’t have the original picture, you can take a screenshot and save it locally.

What is the operation method of morphology in Python+OpenCV

After 1 round of corrosion~ (iterations = 1)

kernel = np.ones((3, 3), np.uint8)
erosion = cv2.erode(img, kernel, iterations=1)

cv2.imshow('erosion', erosion)
cv2.waitKey(0)
cv2.destroyAllWindows()

Corrosion result display picture 2:

What is the operation method of morphology in Python+OpenCV

The effect of corroding a circle multiple times, and the principle of corrosion

pie = cv2.imread('DataPreprocessing/img/pie.png')

cv2.imshow('pie', pie)
cv2.waitKey(0)
cv2.destroyAllWindows()

pie.pngOriginal picture 3:

What is the operation method of morphology in Python+OpenCV

##Corrosion Principle, the larger the size of the filter, the greater the degree of corrosion

Figure 4:

What is the operation method of morphology in Python+OpenCV

kernel = np.ones((30, 30), np.uint8)
erosion_1 = cv2.erode(pie, kernel, iterations=1)
erosion_2 = cv2.erode(pie, kernel, iterations=2)
erosion_3 = cv2.erode(pie, kernel, iterations=3)
res = np.hstack((erosion_1, erosion_2, erosion_3))
cv2.imshow('res', res)
cv2.waitKey(0)
cv2.destroyAllWindows()

Display of three circular corrosion results

Figure 5:

What is the operation method of morphology in Python+OpenCV

1.2 Expansion operation

kernel = np.ones((3, 3), np.uint8)
dige_dilate = erosion
dige_dilate = cv2.dilate(erosion, kernel, iterations=1)

cv2.imshow('dilate', dige_dilate)
cv2.waitKey(0)
cv2.destroyAllWindows()

Before expansion, in Figure 2, I found that the lines became thicker and were almost the same as those in the original image, but they were gone. Those long-bearded noises,

Figure 6:

What is the operation method of morphology in Python+OpenCV

#The effect of expanding the circle multiple times, and the expansion principle is opposite to corrosion, with white dot filtering , all the data in the filter will turn white.

pie = cv2.imread('DataPreprocessing/img/pie.png')

kernel = np.ones((30, 30), np.uint8)
dilate_1 = cv2.dilate(pie, kernel, iterations=1)
dilate_2 = cv2.dilate(pie, kernel, iterations=2)
dilate_3 = cv2.dilate(pie, kernel, iterations=3)
res = np.hstack((dilate_1, dilate_2, dilate_3))
cv2.imshow('res', res)
cv2.waitKey(0)
cv2.destroyAllWindows()

Results of expanding the circle 3 times,

Figure 7:

What is the operation method of morphology in Python+OpenCV## 2. Opening operation and closing operation

2.1 Opening operation

# 开:先腐蚀,再膨胀
img = cv2.imread('DataPreprocessing/img/dige.png')

kernel = np.ones((5, 5), np.uint8)
opening = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)

cv2.imshow('opening', opening)
cv2.waitKey(0)
cv2.destroyAllWindows()

Corrode the original picture 1 first, and then expand it to obtain the opening operation result

Figure 8:

What is the operation method of morphology in Python+OpenCV2.2 Closed operation

# 闭:先膨胀,再腐蚀
img = cv2.imread('DataPreprocessing/img/dige.png')

kernel = np.ones((5, 5), np.uint8)
closing = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel)

cv2.imshow('closing', closing)
cv2.waitKey(0)
cv2.destroyAllWindows()

First expand and then corrode the original image 1 to obtain the result of the open operation

Figure 9:

What is the operation method of morphology in Python+OpenCV3. Gradient operation

Take the circle in the original picture 3, do 5 times of expansion, 5 times of erosion, and subtract to get its outline.

# 梯度=膨胀-腐蚀
pie = cv2.imread('DataPreprocessing/img/pie.png')
kernel = np.ones((7, 7), np.uint8)
dilate = cv2.dilate(pie, kernel, iterations=5)
erosion = cv2.erode(pie, kernel, iterations=5)

res = np.hstack((dilate, erosion))

cv2.imshow('res', res)
cv2.waitKey(0)
cv2.destroyAllWindows()

gradient = cv2.morphologyEx(pie, cv2.MORPH_GRADIENT, kernel)

cv2.imshow('gradient', gradient)
cv2.waitKey(0)
cv2.destroyAllWindows()

Obtain the gradient operation result

Figure 10:

What is the operation method of morphology in Python+OpenCV

##4. Top hat and black hatWhat is the operation method of morphology in Python+OpenCV

4.1 Top hat

Top hat=original input-open operation result

# 礼帽
img = cv2.imread('DataPreprocessing/img/dige.png')
tophat = cv2.morphologyEx(img, cv2.MORPH_TOPHAT, kernel)
cv2.imshow('tophat', tophat)
cv2.waitKey(0)
cv2.destroyAllWindows()
get top hat resultFigure 11:

4.2 Black HatWhat is the operation method of morphology in Python+OpenCV

Black Hat = Closed operation-original input

# 黑帽
img = cv2.imread('DataPreprocessing/img/dige.png')
blackhat = cv2.morphologyEx(img, cv2.MORPH_BLACKHAT, kernel)
cv2.imshow('blackhat ', blackhat)
cv2.waitKey(0)
cv2.destroyAllWindows()
Get the top hat resultFigure 12:

The above is the detailed content of What is the operation method of morphology in Python+OpenCV. For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:yisu.com. If there is any infringement, please contact admin@php.cn delete