曹旭辉 发表于 2024-12-30 18:04:22

OpenCV-Python实战(10)——形态学

1、腐蚀 cv2.erode()

可以删除图像中的噪音点。
可以删除毛边。
分割图像(当图像连接的不敷精密时) 。
img = cv2.erode(src=*,kernel=*,anchor=*,iterations=*,borderType=*,borderValue=*)
img:目标图像。
src:原始图像。
kernel:腐蚀核巨细。
anchor:锚点位置,默认是:(-1,-1),核的中心。
iterations:腐蚀操纵迭代次数。
borderType、borderValue:边界样式,边界值,使用默认即可。
import cv2
import numpy as np

pie = cv2.imread('pie.png')# 圆
h,w = pie.shape[:2] # 图像的高,宽
pie=0 # 在圆中间画一条线

img1 = cv2.erode(src=pie,kernel=(11,11),iterations=3)# 腐蚀

cv2.imshow('pie',pie)
cv2.imshow('img1',img1)
cv2.waitKey(0)
cv2.destroyAllWindows() https://i-blog.csdnimg.cn/direct/aa6028a51f3b4112bfb8730e3383ab48.png
2、膨胀 cv2.dilate()

图像沿着边沿向外扩展的操纵。
img = cv2.dilate(src=*,kernel=*,anchor=*,iterations=*,borderType=*,borderValue=*)
img:目标图像。
src:原始图像。
kernel:腐蚀核巨细。
anchor:锚点位置,默认是:(-1,-1),核的中心。
iterations:腐蚀操纵迭代次数。
borderType、borderValue:边界样式,边界值,使用默认即可。
import cv2
import numpy as np

pie = cv2.imread('pie.png')# 圆
h,w = pie.shape[:2] # 图像的高,宽
pie=0 # 在圆中间画一条线

img1 = cv2.dilate(src=pie,kernel=(11,11),iterations=4)

cv2.imshow('pie',pie)
cv2.imshow('img1',img1)
cv2.waitKey(0)
cv2.destroyAllWindows() https://i-blog.csdnimg.cn/direct/942cfdca9dce4e96bd46b34bd4d658d6.png
3、形态学通用函数 cv2.morphologyEx()

img = cv2.morphologyEx(src=*,op=*,kernel=*,anchor=*,iterations=*,borderType=*,borderValue=*) img:目标图像。
src:原始图像。
op:操纵方式,常见操纵方式如下表所示:
操纵方式表明MOREPH_ERODE腐蚀MOREPH_DILATE膨胀MOREPH_OPEN开运算MOREPH_CLOSE闭运算MOREPH_GRADIENT形态学梯度MOREPH_TOPHAT规矩运算MOREPH_BLACKHAT黑帽运算 kernel:腐蚀核巨细。
anchor:锚点位置,默认是:(-1,-1),核的中心。
iterations:腐蚀操纵迭代次数。
borderType、borderValue:边界样式,边界值,使用默认即可。

4、开运算 cv2.morphologyEx()

先做腐蚀,在做膨胀操纵。
import cv2
import numpy as np

pie = cv2.imread('pie.png')# 圆
h,w = pie.shape[:2] # 图像的高,宽
pie=255 # 在圆中间画一条线

img1 = cv2.morphologyEx(src=pie,op=cv2.MORPH_OPEN,kernel=(11,11),iterations=3)

cv2.imshow('pie',pie)
cv2.imshow('img1',img1)
cv2.waitKey(0)
cv2.destroyAllWindows() https://i-blog.csdnimg.cn/direct/da28a09faa5d49209f76dde1dafdb915.png
5、闭运算  

先做膨胀操纵,在做腐蚀操纵。 
import cv2
import numpy as np

pie = cv2.imread('pie.png')# 圆
h,w = pie.shape[:2] # 图像的高,宽
pie=0 # 在圆中间画一条线

img1 = cv2.morphologyEx(src=pie,op=cv2.MORPH_CLOSE,kernel=(11,11),iterations=3)

cv2.imshow('pie',pie)
cv2.imshow('img1',img1)
cv2.waitKey(0)
cv2.destroyAllWindows() https://i-blog.csdnimg.cn/direct/ca69fd460ed94388ab026cf439b2efde.png
 6、形态学梯度

膨胀操纵后的图像 - 腐蚀操纵后的图像 = 图像边沿 
import cv2

pie = cv2.imread('pie.png')# 圆


img1 = cv2.morphologyEx(src=pie,op=cv2.MORPH_GRADIENT,kernel=(11,11),iterations=3)

cv2.imshow('pie',pie)
cv2.imshow('img1',img1)
cv2.waitKey(0)
cv2.destroyAllWindows() https://i-blog.csdnimg.cn/direct/edd91f99b38e483b91fc889f9b999833.png
 7、礼帽运算

原始图像 - 开运算图像 = 礼帽运算
可以得到原始图像的噪音点。
import cv2
import numpy as np

pie = cv2.imread('pie.png')

h,w = pie.shape[:2]
pie=255 # 在圆中间画一条线

img1 = cv2.morphologyEx(src=pie,op=cv2.MORPH_TOPHAT,kernel=(11,11))

cv2.imshow('pie',pie)
cv2.imshow('img1',img1)
cv2.waitKey(0)
cv2.destroyAllWindows()
https://i-blog.csdnimg.cn/direct/2e98f5cff5ae4d2f93d898fd89ddaf52.png

 8、黑帽运算

 原始图像 - 闭运算图像 = 黑帽运算
import cv2
import numpy as np

pie = cv2.imread('pie.png')

h,w = pie.shape[:2]
pie=255 # 在圆中间画一条线

img1 = cv2.morphologyEx(src=pie,op=cv2.MORPH_BLACKHAT,kernel=(11,11))

cv2.imshow('pie',pie)
cv2.imshow('img1',img1)
cv2.waitKey(0)
cv2.destroyAllWindows() https://i-blog.csdnimg.cn/direct/049c8aeaff354812bc10c8b13c39c90d.png
9、核函数

kernel = cv2.getStructuringElement(shape=*,ksize=,anchor=*)
kernel:核矩阵。
shape:内核形状,常见的参数如下:
参数表明MORPH_RECT所有元素都是1MORPH_ELLIPSE椭圆形位置为1MORPH_CROSS十字形位置是1 ksize:内核巨细。
anchor:内核锚点,默认为:(-1,-1),核中心位置。
import cv2

kernel1 = cv2.getStructuringElement(shape=cv2.MORPH_RECT,ksize=(5,5))
kernel2 = cv2.getStructuringElement(shape=cv2.MORPH_ELLIPSE,ksize=(5,5))
kernel3 = cv2.getStructuringElement(shape=cv2.MORPH_CROSS,ksize=(5,5))
print(kernel1)
print(kernel2)
print(kernel3)

cv2.waitKey(0)
cv2.destroyAllWindows() [    [    [
      
      
      
]    ]    ] https://i-blog.csdnimg.cn/direct/16cd51acaf43425db5f3c5826b5c98ad.gif

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: OpenCV-Python实战(10)——形态学