OpenCV学习——图像处理之形态学操作

概念:图像的邻域、连通性

膨胀与腐蚀

膨胀和腐蚀为 相反 的一对操作。dilate (膨胀) erode(腐蚀)都是 形态学的滤波 。

腐蚀:

腐蚀是对图像中的高亮(白色)区域进行腐蚀,即求局部区域最小值的操作。

下图的示例是用 3*3 的算 子对二值图像进行腐蚀操作,求取对应位置的 8 邻域的最小值并输出:

腐蚀作用: 消除物体边界点,使目标 缩小,可以 消除小于结构元素的噪声点

腐蚀函数: cv2.erode()

函数原型:dst=cv2.erode(img,kernel,iterations)

img:要处理的图像

kernel:核结构

iterations:腐蚀的次数,默认是1

膨胀:

膨胀是对图像中的高亮(白色)区域进行膨胀,即求局部区域最大值的操作,膨胀运算是腐蚀的逆运算。

膨胀作用:将与物体接触的所有背景点合并到物体中,使目标 增大,可 添补目标中的孔洞

膨胀函数: cv2.dilate()

函数原型:dst=cv2.dilate(img,kernel,iterations)

img:要处理的图像

kernel:核结构

iterations:膨胀的次数,默认是1

代码:

img = cv.imread('test.jpg')
kernel = np.ones((5, 5), np.uint8) #创建核结构
erosion = cv.erode(img, kernel)
dilate = cv.dilate(img, kernel)
cv.imshow('erosion', erosion)
cv.imshow('dilate', dilate)
cv.waitKey(0)

开闭运算

开闭运算函数: cv2.morphologyEx()

函数原型:dst=cv2.morphologyEx(img,op,kernel)

img:要处理的图像

op:处理方式:若进行开运算,则设为cv2.MORPH_OPEN,若进行闭运算,则设为cv2.MORPH_CLOSE

kernel:核结构

代码:

img = cv.imread('test.jpg')
kernel = np.ones((10, 10), np.uint8)
open = cv.morphologyEx(img, cv.MORPH_OPEN, kernel)
close = cv.morphologyEx(img, cv.MORPH_CLOSE, kernel)
cv.imshow('open', open)
cv.imshow('close', close)
cv.waitKey(0)

礼帽和黑帽

礼帽和黑帽运算函数:cv2.morphologyEx()

函数原型:dst=cv2.morphologyEx(img,op,kernel)

img:要处理的图像

op:处理方式:若进行礼帽运算,则设为cv2.MORPH_TOPHAT,若进行黑帽运算,则设为cv2.MORPH_BLACKHAT

kernel:核结构

代码:

img = cv.imread('test.jpg')
kernel = np.ones((10, 10), np.uint8)
top = cv.morphologyEx(img, cv.MORPH_TOPHAT, kernel)
black = cv.morphologyEx(img, cv.MORPH_BLACKHAT, kernel)
cv.imshow('top', top)
cv.imshow('black', black)
cv.waitKey(0)

总结:

Original: https://blog.csdn.net/qq_53457019/article/details/122951391
Author: 遮云壑
Title: OpenCV学习——图像处理之形态学操作

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/645053/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球