Maison  >  Article  >  développement back-end  >  Quelle est la méthode de fonctionnement de la morphologie en Python+OpenCV

Quelle est la méthode de fonctionnement de la morphologie en Python+OpenCV

WBOY
WBOYavant
2023-05-28 15:16:061421parcourir

1. Corrosion et expansion

1.1 Opération de corrosion

import cv2
import numpy as np

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

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

dige.png image originale 1 affichée (Remarque : si vous n'avez pas l'image originale, vous pouvez prendre une capture d'écran et l'enregistrer localement.

Quelle est la méthode de fonctionnement de la morphologie en Python+OpenCV

Après 1 tour de corrosion ~ (itérations = 1)

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

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

Affichage du résultat de la corrosion photo 2 :

Quelle est la méthode de fonctionnement de la morphologie en Python+OpenCV

L'effet de plusieurs cercles de corrosion et le principe de la corrosion

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

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

pie.pngPhoto originale 3 :

Quelle est la méthode de fonctionnement de la morphologie en Python+OpenCV

principe de corrosion, dans lequel le principe de corrosion du filtre Plus la taille est grande, plus le degré de corrosion est grandFigure 4 :

Quelle est la méthode de fonctionnement de la morphologie en 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()

Affichage de trois résultats de corrosion circulaireFigure 5 :

Quelle est la méthode de fonctionnement de la morphologie en Python+OpenCV

1.2 Opération d'expansion

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()

Avant l'expansion, la figure 2, a constaté que les lignes sont devenues plus épaisses, Les lignes par rapport à l'image originale sont presque les mêmes, mais sans le bruit de ces appareils à longue barbe, Figure 6 :

Quelle est la méthode de fonctionnement de la morphologie en Python+OpenCV

L'effet de l'expansion du cercle plusieurs fois, et le principe de l'expansion est opposé à la corrosion. Le filtre avec des points blancs est Les données dans le filtre deviennent toutes blanches

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()

Résultats de l'expansion du cercle 3 fois. , Figure 7 :

Quelle est la méthode de fonctionnement de la morphologie en Python+OpenCV

2. Opération d'ouverture et opération de fermeture

2.1 Opération d'ouverture

# 开:先腐蚀,再膨胀
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()

Changez l'image originale 1, corrodez d'abord, puis agrandissez et obtenez le résultat de l'opération d'ouvertureFigure 8 :

Quelle est la méthode de fonctionnement de la morphologie en Python+OpenCV

2.2 Opération fermée

# 闭:先膨胀,再腐蚀
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()

Dilatez d'abord l'image originale 1, puis corrodez-la, et obtenez le résultat de l'opération ouverteFigure 9 :

Quelle est la méthode de fonctionnement de la morphologie en Python+OpenCV

3 Opération dégradé

Prenez le cercle. dans l'image originale 3, faites 5 fois d'expansion, 5 fois d'érosion et soustrayez pour obtenir son contour

# 梯度=膨胀-腐蚀
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()

Obtenez le résultat de l'opération de dégradéFigure 10 :

Quelle est la méthode de fonctionnement de la morphologie en Python+OpenCV

IV, Chapeau haut de forme et chapeau noir Quelle est la méthode de fonctionnement de la morphologie en Python+OpenCV.

4.1 chapeau supérieur

Hat supérieur = entrée d'origine - Open opération Résultat

# 礼帽
img = cv2.imread('DataPreprocessing/img/dige.png')
tophat = cv2.morphologyEx(img, cv2.MORPH_TOPHAT, kernel)
cv2.imshow('tophat', tophat)
cv2.waitKey(0)
cv2.destroyAllWindows()
Résultat du chapeau haut
# 黑帽
img = cv2.imread('DataPreprocessing/img/dige.png')
blackhat = cv2.morphologyEx(img, cv2.MORPH_BLACKHAT, kernel)
cv2.imshow('blackhat ', blackhat)
cv2.waitKey(0)
cv2.destroyAllWindows()
pour obtenir le résultat chapeau haut de forme

Image 12 :

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer