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
Release: 2023-05-28 15:16:06
forward
1447 people have browsed it

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()
Copy after login

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()
Copy after login

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()
Copy after login

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()
Copy after login

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()
Copy after login

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()
Copy after login

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()
Copy after login

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()
Copy after login

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()
Copy after login

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()
Copy after login
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()
Copy after login
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!

Related labels:
source:yisu.com
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template