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