Maison > Article > développement back-end > Quelle est la méthode de fonctionnement de la morphologie en Python+OpenCV
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.
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 :
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 :
principe de corrosion, dans lequel le principe de corrosion du filtre Plus la taille est grande, plus le degré de corrosion est grandFigure 4 :
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 :
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 :
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 :
# 开:先腐蚀,再膨胀 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 :
# 闭:先膨胀,再腐蚀 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 :
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 :
IV, Chapeau haut de forme et chapeau noir .
4.1 chapeau supérieur# 礼帽 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 formeImage 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!