1、开运算
先进行腐蚀再进行膨胀就叫做开运算。图像被腐蚀后,去除了噪声,但会压缩图像;对腐蚀过的图像进行膨胀处理,可以去除噪声并保持原有形状。
代码如下,
import cv2 #opencv读取的格式是BGR import numpy as np import matplotlib.pyplot as plt#Matplotlib是RGB img = cv2.imread('cjavapy.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()
2、闭运算
先进行膨胀再进行腐蚀就叫做开运算。它有助于关闭前景物体内部的小孔,或物体上的小黑点。
代码如下,
import cv2 #opencv读取的格式是BGR import numpy as np import matplotlib.pyplot as plt#Matplotlib是RGB img = cv2.imread('cjavapy.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()
3、梯度运算
一张图片分别做膨胀与腐蚀操作,最后用膨胀后的图片减去腐蚀的图片,得到的新图片便是该图片的梯度运算。
梯度运算 (img) = 膨胀 (img) - 腐蚀 (img)
通过梯度运算可以得到前景物体的轮廓。
代码如下,
import cv2 #opencv读取的格式是BGR import numpy as np import matplotlib.pyplot as plt#Matplotlib是RGB img = cv2.imread('cjavapy.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() # morphologyEx() 实现开运算 # src:需要处理的图像 # cv2.MORPH_GRADIENT:指定为梯度运算 # kernel:卷积核,为元组,一般使用 numpy 进行赋值 gradient = cv2.morphologyEx(pie, cv2.MORPH_GRADIENT, kernel) cv2.imshow('gradient', gradient) cv2.waitKey(0) cv2.destroyAllWindows()
4、顶帽运算(礼帽)
取出亮度高的地方
顶帽运算 = 原图像 - 开运算
开运算可以消除暗背景下的高亮区域,如果用原图减去开运算结果,就可以得到原图中灰度较亮的区域,所以又称白顶帽变换。
代码如下,
import cv2 #opencv读取的格式是BGR import numpy as np import matplotlib.pyplot as plt#Matplotlib是RGB img = cv2.imread('cjavapy.png') tophat = cv2.morphologyEx(img, cv2.MORPH_TOPHAT, kernel) cv2.imshow('tophat', tophat) cv2.waitKey(0) cv2.destroyAllWindows()
5、底帽运算(黑帽)
取出亮度低的地方
底帽运算 = 原图像 - 闭运算
闭运算可以删除亮背景下的暗区域,那么用原图减去闭运算结果就可以得到原图像中灰度较暗的区域,所以又称黑底帽变换。
代码如下,
import cv2 #opencv读取的格式是BGR import numpy as np import matplotlib.pyplot as plt#Matplotlib是RGB img = cv2.imread('cjavapy.png') blackhat = cv2.morphologyEx(img,cv2.MORPH_BLACKHAT, kernel) cv2.imshow('blackhat ', blackhat ) cv2.waitKey(0) cv2.destroyAllWindows()