6. Erosión y expansión de imagen Opencv (operación de apertura, operación de cierre)

1. Imagen de corrosión

Esta operación erosionará los límites de los objetos de primer plano. ¿Cómo es esto posible? El kernel de convolución se desliza a lo largo de la imagen, si todos los valores de píxeles de la imagen correspondiente al kernel de convolución son 1, entonces todos los valores de píxeles en esta área son 1, de lo contrario son 0. Útil para eliminar el ruido blanco, desconectar dos objetos conectados, etc.

Sintaxis: cv2.erode(img,kernel,iteraciones=1)

img: Indica la imagen de entrada.

kernel: Indica el kernel de convolución definido.

iteraciones: Indica el número de iteraciones de corrosión, en términos sencillos, cuántas veces de corrosión.

import cv2  
import matplotlib.pyplot as plt
import numpy as np

img = cv2.imread("C:\\Users\\zhangqs\\Desktop\\pie.png", cv2.IMREAD_COLOR)

#腐蚀操作 将有价值的信息缩小
kernel=np.ones((30,30),np.uint8)
erode1=cv2.erode(img,kernel,iterations=1) #迭代次数1
erode2=cv2.erode(img,kernel,iterations=2) #迭代次数2
erode3=cv2.erode(img,kernel,iterations=3) #迭代次数3

res=np.hstack((img,erode1,erode2,erode3))
cv2.imshow('erode', res)  
cv2.waitKey(0)        
cv2.destroyAllWindows()

resultado de ejecución

 2. Inflación de imagen

Sintaxis: cv2.dilate(img,kernel,iteraciones=2)

img: Indica la imagen de entrada.

kernel: Indica el kernel de convolución definido.

iteraciones: Indica el número de iteraciones de corrosión, en términos sencillos, cuántas veces de corrosión.

import cv2  
import matplotlib.pyplot as plt
import numpy as np

img = cv2.imread("C:\\Users\\zhangqs\\Desktop\\pie.png", cv2.IMREAD_COLOR)

#膨胀操作 将有价值的信息放大
kernel=np.ones((30,30),np.uint8)
dilate1=cv2.dilate(img,kernel,iterations=1) #迭代次数1
dilate2=cv2.dilate(img,kernel,iterations=2) #迭代次数2
dilate3=cv2.dilate(img,kernel,iterations=3) #迭代次数3

res2=np.hstack((img,dilate1,dilate2,dilate3))
cv2.imshow('dilate', res2)  
cv2.waitKey(0)        
cv2.destroyAllWindows()

resultado de ejecución

 3. Operación abierta: corroer primero, luego expandir

Sintaxis: cv2.morphologyEx(img,cv2.MORPH_OPEN,kernel)

import cv2  
import matplotlib.pyplot as plt
import numpy as np

img = cv2.imread("C:\\Users\\zhangqs\\Desktop\\pie.png", cv2.IMREAD_COLOR)

#开运行:先腐蚀,再膨胀
kernel=np.ones((30,30),np.uint8)
open=cv2.morphologyEx(img,cv2.MORPH_OPEN,kernel)
cv2.imshow('open', open)  
cv2.waitKey(0)        
cv2.destroyAllWindows()

 

 

 4. Operación cerrada: expandir primero, luego corroer

Sintaxis: cv2.morphologyEx(img,cv2.MORPH_CLOSE,kernel)

import cv2  
import matplotlib.pyplot as plt
import numpy as np

img = cv2.imread("C:\\Users\\zhangqs\\Desktop\\pie.png", cv2.IMREAD_COLOR)
 
#闭运算:先膨胀,再腐蚀
kernel=np.ones((30,30),np.uint8)
close=cv2.morphologyEx(img,cv2.MORPH_CLOSE,kernel)
cv2.imshow('close', close)  
cv2.waitKey(0)        
cv2.destroyAllWindows()

 5. Gradiente, sombrero de copa, sombrero negro

Gradiente = Dilatación-Erosión(cv2.MORPH_GRADIENT)

Sombrero de copa = entrada original - resultado de la operación abierta (cv2.MORPH_TOPHAT)

Sombrero negro = resultado de operación cerrada - entrada original (cv2.MORPH_BLACKHAT)

import cv2  
import matplotlib.pyplot as plt
import numpy as np

img = cv2.imread("C:\\Users\\zhangqs\\Desktop\\pie.png", cv2.IMREAD_COLOR)
 
#梯度=膨胀-腐蚀
kernel=np.ones((5,5),np.uint8)
gradient=cv2.morphologyEx(img,cv2.MORPH_GRADIENT,kernel)
cv2.imshow('gradient', gradient)  
cv2.waitKey(0)        
cv2.destroyAllWindows()

#礼帽=原始输入-开运算结果
kernel=np.ones((5,5),np.uint8)
tophat=cv2.morphologyEx(img,cv2.MORPH_TOPHAT,kernel)
cv2.imshow('tophat', tophat)  
cv2.waitKey(0)        
cv2.destroyAllWindows()

#黑帽=闭运算结果-原始输入
kernel=np.ones((5,5),np.uint8)
blackhat=cv2.morphologyEx(img,cv2.MORPH_BLACKHAT,kernel)
cv2.imshow('blackhat', blackhat)  
cv2.waitKey(0)        
cv2.destroyAllWindows()

Supongo que te gusta

Origin blog.csdn.net/a497785609/article/details/131208393
Recomendado
Clasificación