OpenCV 中 getStructuringElement() 与 morphologyEx() 函数用法

时间:2020-12-13 08:10:02   收藏:0   阅读:449

getStructuringElement() 与 morphologyEx() 两个函数使用时,经常是放在一起的,后者函数中用到的参数是由前者提供

参数详讲

使用命令

retval	=	cv.getStructuringElement(	shape, ksize[, anchor]	)

morphologyEx()

语法命令

dst	=cv.morphologyEx(src, op, kernel[, dst[, anchor[, iterations[, borderType[, borderValue]]]]]	)

对图像进行形态学转换;利用最基本腐蚀、膨胀形态学操作;所有操作可直接在源图像上实现,针对多通道图像,其中每个通道都是独立处理,这个方法常用来提取图像中某类不规则形状的区域

参数解析

针对上面这两种方法的用法,这里给一个例子,提取下方图片中水印部分,也就是中间黑色圆环,和下方字体

技术分享图片

例子代码用到的代码如下

import cv2
import numpy as np

if __name__ ==‘__main__‘:
    img_path = "F:/Data/Ceshi1/shuiyin.jpg"
    im = cv2.imread(img_path)

    gray = cv2.cvtColor(im,cv2.COLOR_BGR2GRAY)

    background = gray.copy()
    for i in range(1,5):
        kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(2*i+1,2*i+1))
        # print(‘kernel size is ‘,kernel)
        background = cv2.morphologyEx(background,cv2.MORPH_CLOSE,kernel)
        background = cv2.morphologyEx(background,cv2.MORPH_CLOSE,kernel)

    cv2.namedWindow(‘diff‘,cv2.WINDOW_FREERATIO) # 获取图像中前景背景之差
    cv2.imshow(‘diff‘,background)

代码中用了一个 for 循环,用来控制提取图像不规则形状的次数,可以根据结果确定一个比较好的值,最终实验证明了 4 为最合适的

最终提取结果如下

技术分享图片

原文:https://www.cnblogs.com/zeroing0/p/14127411.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!