✨博客主页:米开朗琪罗~
✨博主爱好:羽毛球
✨年轻人要:Living for the moment(活在当下)!
推荐专栏:【图像处理】【千锤百炼Python】【深度学习】【排序算法】
在【OpenCV-Python】:形态学操作之腐蚀与膨胀中介绍了形态学处理的两个基本操作:腐蚀与膨胀;
在【OpenCV-Python】:形态学操作之开运算与闭运算中介绍了基于腐蚀与膨胀的另外两个形态学操作:开运算、闭运算;
本节带来基于上述运算的形态学梯度 + 顶帽、黑帽操作。
形态学梯度能描述图像亮度变化的剧烈程度,我们可以使用形态学梯度突出物体边缘。
常见的几种梯度:
我们常说的形态学梯度一般指基本梯度。
import cv2
import numpy as np
ori = cv2.imread(r"C:\Users\Lenovo\Desktop\original.jpg")
k = np.ones((5, 5), np.uint8)
gradient = cv2.morphologyEx(ori, cv2.MORPH_GRADIENT, k)
cv2.imshow("original", ori)
cv2.imshow("gradient", gradient)
cv2.imwrite(r"C:\Users\Lenovo\Desktop\gradient.jpg", gradient)
cv2.waitKey()
下图为程序执行的结果,可以看到图像的边缘部分得到了加强!
顶帽可不是⬇️⬇️⬇️⬇️⬇️⬇️⬇️
顶帽指原图减去原图的开运算得到的图像,顶帽运算又叫礼帽运算。
顶帽作用:突出原图轮廓的周边区域,分离比邻近点亮一些的斑块。
import cv2
import numpy as np
ori = cv2.imread(r"C:\Users\Lenovo\Desktop\original.jpg")
k = np.ones((5, 5), np.uint8)
tophat = cv2.morphologyEx(ori, cv2.MORPH_TOPHAT, k)
cv2.imshow("original", ori)
cv2.imshow("topha", tophat)
cv2.imwrite(r"C:\Users\Lenovo\Desktop\tophat.jpg", tophat)
cv2.waitKey()
cv2.destroyAllWindows()
下图为程序执行的结果,可以看到图像轮廓的周边区域得到了加强!
闭运算减去原图得到的图像叫做黑帽。
黑帽作用:黑帽与顶帽相反,黑帽突出原图轮廓的暗区域,分离比邻近点暗一些的斑块。
import cv2
import numpy as np
ori = cv2.imread(r"C:\Users\Lenovo\Desktop\original.jpg")
k = np.ones((5, 5), np.uint8)
blackhat = cv2.morphologyEx(ori, cv2.MORPH_BLACKHAT, k)
cv2.imshow("original", ori)
cv2.imshow("blackhat", blackhat)
cv2.imwrite(r"C:\Users\Lenovo\Desktop\blackhat.jpg", blackhat)
cv2.waitKey()
cv2.destroyAllWindows()