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]]

Original: https://blog.csdn.net/Hero_Never_GIVE_UP/article/details/124057671
Author: HeroFUCKEVERYTHING
Title: OpenCV 高级形态学函数cv2.morphology()

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

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

(0)

大家都在看

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