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

打印 上一主题 下一主题

主题 771|帖子 771|积分 2313

1、腐蚀 cv2.erode()

可以删除图像中的噪音点。
可以删除毛边。
分割图像(当图像连接的不敷精密时) 。
  1. img = cv2.erode(src=*,kernel=*,anchor=*,iterations=*,borderType=*,borderValue=*)
复制代码
img:目标图像。
src:原始图像。
kernel:腐蚀核巨细。
anchor:锚点位置,默认是:(-1,-1),核的中心。
iterations:腐蚀操纵迭代次数。
borderType、borderValue:边界样式,边界值,使用默认即可。
  1. import cv2
  2. import numpy as np
  3. pie = cv2.imread('pie.png')  # 圆
  4. h,w = pie.shape[:2] # 图像的高,宽
  5. pie[int(h/2-2):int(h/2+2),50:w-50]=0 # 在圆中间画一条线
  6. img1 = cv2.erode(src=pie,kernel=(11,11),iterations=3)  # 腐蚀
  7. cv2.imshow('pie',pie)
  8. cv2.imshow('img1',img1)
  9. cv2.waitKey(0)
  10. cv2.destroyAllWindows()
复制代码

2、膨胀 cv2.dilate()

图像沿着边沿向外扩展的操纵。
  1. img = cv2.dilate(src=*,kernel=*,anchor=*,iterations=*,borderType=*,borderValue=*)  
复制代码
img:目标图像。
src:原始图像。
kernel:腐蚀核巨细。
anchor:锚点位置,默认是:(-1,-1),核的中心。
iterations:腐蚀操纵迭代次数。
borderType、borderValue:边界样式,边界值,使用默认即可。
  1. import cv2
  2. import numpy as np
  3. pie = cv2.imread('pie.png')  # 圆
  4. h,w = pie.shape[:2] # 图像的高,宽
  5. pie[int(h/2-2):int(h/2+2),50:w-50]=0 # 在圆中间画一条线
  6. img1 = cv2.dilate(src=pie,kernel=(11,11),iterations=4)
  7. cv2.imshow('pie',pie)
  8. cv2.imshow('img1',img1)
  9. cv2.waitKey(0)
  10. cv2.destroyAllWindows()
复制代码

3、形态学通用函数 cv2.morphologyEx()

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

先做腐蚀,在做膨胀操纵。
  1. import cv2
  2. import numpy as np
  3. pie = cv2.imread('pie.png')  # 圆
  4. h,w = pie.shape[:2] # 图像的高,宽
  5. pie[int(h/2-1):int(h/2+1),50:w-50]=255 # 在圆中间画一条线
  6. img1 = cv2.morphologyEx(src=pie,op=cv2.MORPH_OPEN,kernel=(11,11),iterations=3)
  7. cv2.imshow('pie',pie)
  8. cv2.imshow('img1',img1)
  9. cv2.waitKey(0)
  10. cv2.destroyAllWindows()
复制代码

5、闭运算  

先做膨胀操纵,在做腐蚀操纵。 
  1. import cv2
  2. import numpy as np
  3. pie = cv2.imread('pie.png')  # 圆
  4. h,w = pie.shape[:2] # 图像的高,宽
  5. pie[int(h/2-1):int(h/2+1),50:w-50]=0 # 在圆中间画一条线
  6. img1 = cv2.morphologyEx(src=pie,op=cv2.MORPH_CLOSE,kernel=(11,11),iterations=3)
  7. cv2.imshow('pie',pie)
  8. cv2.imshow('img1',img1)
  9. cv2.waitKey(0)
  10. cv2.destroyAllWindows()
复制代码

 6、形态学梯度

膨胀操纵后的图像 - 腐蚀操纵后的图像 = 图像边沿 
  1. import cv2
  2. pie = cv2.imread('pie.png')  # 圆
  3. img1 = cv2.morphologyEx(src=pie,op=cv2.MORPH_GRADIENT,kernel=(11,11),iterations=3)
  4. cv2.imshow('pie',pie)
  5. cv2.imshow('img1',img1)
  6. cv2.waitKey(0)
  7. cv2.destroyAllWindows()
复制代码

 7、礼帽运算

原始图像 - 开运算图像 = 礼帽运算
可以得到原始图像的噪音点。
  1. import cv2
  2. import numpy as np
  3. pie = cv2.imread('pie.png')
  4. h,w = pie.shape[:2]
  5. pie[int(h/2-1):int(h/2+1),:]=255 # 在圆中间画一条线
  6. img1 = cv2.morphologyEx(src=pie,op=cv2.MORPH_TOPHAT,kernel=(11,11))
  7. cv2.imshow('pie',pie)
  8. cv2.imshow('img1',img1)
  9. cv2.waitKey(0)
  10. cv2.destroyAllWindows()
复制代码



 8、黑帽运算

 原始图像 - 闭运算图像 = 黑帽运算
  1. import cv2
  2. import numpy as np
  3. pie = cv2.imread('pie.png')
  4. h,w = pie.shape[:2]
  5. pie[int(h/2-1):int(h/2+1),:]=255 # 在圆中间画一条线
  6. img1 = cv2.morphologyEx(src=pie,op=cv2.MORPH_BLACKHAT,kernel=(11,11))
  7. cv2.imshow('pie',pie)
  8. cv2.imshow('img1',img1)
  9. cv2.waitKey(0)
  10. cv2.destroyAllWindows()
复制代码

9、核函数

  1. kernel = cv2.getStructuringElement(shape=*,ksize=,anchor=*)
复制代码
kernel:核矩阵。
shape:内核形状,常见的参数如下:
参数表明
MORPH_RECT所有元素都是1
MORPH_ELLIPSE椭圆形位置为1
MORPH_CROSS十字形位置是1
ksize:内核巨细。
anchor:内核锚点,默认为:(-1,-1),核中心位置。
  1. import cv2
  2. kernel1 = cv2.getStructuringElement(shape=cv2.MORPH_RECT,ksize=(5,5))
  3. kernel2 = cv2.getStructuringElement(shape=cv2.MORPH_ELLIPSE,ksize=(5,5))
  4. kernel3 = cv2.getStructuringElement(shape=cv2.MORPH_CROSS,ksize=(5,5))
  5. print(kernel1)
  6. print(kernel2)
  7. print(kernel3)
  8. cv2.waitKey(0)
  9. cv2.destroyAllWindows()
复制代码
  1. [[1 1 1 1 1]    [[0 0 1 0 0]    [[0 0 1 0 0]
  2. [1 1 1 1 1]     [1 1 1 1 1]     [0 0 1 0 0]
  3. [1 1 1 1 1]     [1 1 1 1 1]     [1 1 1 1 1]
  4. [1 1 1 1 1]     [1 1 1 1 1]     [0 0 1 0 0]
  5. [1 1 1 1 1]]    [0 0 1 0 0]]    [0 0 1 0 0]]
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

曹旭辉

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表