OpenCV 高级形态学函数cv2.morphology()

morphology:形态学

Python:
cv.morphologyEx(	src, op, kernel[, dst[, anchor[, iterations[, borderType[, borderValue]]]]]	) ->	dst

src:源图
op:操作类型,主要是erode和dilate及两者的组合:
    cv2.MORPH_ERODE:腐蚀,扩大黑色, dst = erode(src)
    cv2.MORPH_DILATE:膨胀,扩大白色, dst = dilate(src)
    cv2.MORPH_OPEN:开运算-open,dst = dilate(erode(src,))
    cv2.MORPH_CLOSE:闭运算-close,dst = erode(dilate(src,))
    cv2.MORPH_GRADIENT:梯度运算-gradient,dst = dilate(src) - erode(src)
    cv2.MORPH_TOPHAT:顶帽运算:dst = src - open(src)
    cv2.MORPH_BLACKHAT:黑帽运算:dst = close(src) - src
    cv2.MORPH_HITMISS:hit or miss,击中或不击中,只支持值为CV_8UC1类型的二值图像
kernel: 
    除了“击中不击中”算法需要使用子图构建kernel外,其他算法都需要使用getStructureElement方法构造。
anchor:表示kernel的中心点位置(注意,这里说的是kernel的中心点位置),负值表示kernel的中心位置(默认值为[-1,-1])。
iterations:腐蚀和膨胀算法各自连续执行次数。例如开运算,iterations=2,表示 erode-erode-dilate-dilate运算,不是交替运算。

getStructureElement 表示核的方式,核是二值的,就是只有0/1两个数值。主要有三种:cv2.MORPH_RECT(矩形)、 cv2.MORPH_CROSS(十字交叉)、 cv2.MORPH_ELLIPSE(椭圆),三种矩阵分别如下:

strc_elem = cv2.getStructuringElement(shape=cv2.MORPH_ELLIPSE,ksize=(13,9))
print(strc_elem)

# 以下三个矩阵分别为对应椭圆(cv2.MORPH_ELLIPSE)、矩形(cv2.MORPH_RECT)、十字交叉(cv2.MORPH_CROSS)的形状。
[[0 0 0 0 0 0 1 0 0 0 0 0 0]
 [0 0 1 1 1 1 1 1 1 1 1 0 0]
 [0 1 1 1 1 1 1 1 1 1 1 1 0]
 [1 1 1 1 1 1 1 1 1 1 1 1 1]
 [1 1 1 1 1 1 1 1 1 1 1 1 1]
 [1 1 1 1 1 1 1 1 1 1 1 1 1]
 [0 1 1 1 1 1 1 1 1 1 1 1 0]
 [0 0 1 1 1 1 1 1 1 1 1 0 0]
 [0 0 0 0 0 0 1 0 0 0 0 0 0]]

[[1 1 1 1 1 1 1 1 1 1 1 1 1]
 [1 1 1 1 1 1 1 1 1 1 1 1 1]
 [1 1 1 1 1 1 1 1 1 1 1 1 1]
 [1 1 1 1 1 1 1 1 1 1 1 1 1]
 [1 1 1 1 1 1 1 1 1 1 1 1 1]
 [1 1 1 1 1 1 1 1 1 1 1 1 1]
 [1 1 1 1 1 1 1 1 1 1 1 1 1]
 [1 1 1 1 1 1 1 1 1 1 1 1 1]
 [1 1 1 1 1 1 1 1 1 1 1 1 1]]

[[0 0 0 0 0 0 1 0 0 0 0 0 0]
 [0 0 0 0 0 0 1 0 0 0 0 0 0]
 [0 0 0 0 0 0 1 0 0 0 0 0 0]
 [0 0 0 0 0 0 1 0 0 0 0 0 0]
 [1 1 1 1 1 1 1 1 1 1 1 1 1]
 [0 0 0 0 0 0 1 0 0 0 0 0 0]
 [0 0 0 0 0 0 1 0 0 0 0 0 0]
 [0 0 0 0 0 0 1 0 0 0 0 0 0]
 [0 0 0 0 0 0 1 0 0 0 0 0 0]]

 

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值