Python OpenCV获取卷积核方法详解

认真发呆
认真发呆
发布时间:2026-10-15 | 3人浏览过
原创

本文介绍OpenCV中获取卷积核的核心函数getStructuringElement,解析shape、ksize及anchor参数含义,并通过矩形、椭圆及十字形卷积核的腐蚀操作代码示例,展示具体实现步骤与参数配置。

1. cv2.getStructuringElement(shape, ksize, anchor=(-1, -1))

该函数用于构建并返回一个结构元素,此元素可直接传递给createMorphologyFilter()、erode()、dilate()或morphologyEx()等形态学处理函数。此外,开发者也可以手动构建任意二进制掩码,并将其作为结构元素使用。

2. 函数参数说明

getStructuringElement(shape, ksize, anchor=None):

Shape:指定结构单元的类型; Ksize:定义卷积核的尺寸,例如(3, 3)、(5, 5)等; Anchor:设定卷积核的锚点位置,默认值为(-1, -1),即位于中心位置;

3. 代码实战

import os
import cv2
import numpy as np
def ErodeFilterRect(img_path='images/lenna.png'):
    img_src=cv2.imread(img_path)
    img=cv2.resize(src=img_src,dsize=(500,500))
    img=cv2.cvtColor(src=img,code=cv2.COLOR_BGR2GRAY)
    # kernel=np.ones((7,7),dtype=np.uint8)
    kernel=cv2.getStructuringElement(shape=cv2.MORPH_RECT,ksize=(3,3))
    print(kernel)
    img=cv2.erode(src=img,kernel=kernel,iterations=1)
    cv2.imshow('img_src',img_src)
    cv2.imshow('img',img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
def ErodeFilterELLIPSE(img_path='images/lenna.png'):
    img_src=cv2.imread(img_path)
    img=cv2.resize(src=img_src,dsize=(500,500))
    img=cv2.cvtColor(src=img,code=cv2.COLOR_BGR2GRAY)
    # kernel=np.ones((7,7),dtype=np.uint8)
    kernel=cv2.getStructuringElement(shape=cv2.MORPH_ELLIPSE,ksize=(3,3))
    print(kernel)
    img=cv2.erode(src=img,kernel=kernel,iterations=1)
    cv2.imshow('img_src',img_src)
    cv2.imshow('img',img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    
def ErodeFilterCROSS(img_path='images/lenna.png'):
    img_src=cv2.imread(img_path)
    img=cv2.resize(src=img_src,dsize=(500,500))
    img=cv2.cvtColor(src=img,code=cv2.COLOR_BGR2GRAY)
    # kernel=np.ones((7,7),dtype=np.uint8)
    kernel=cv2.getStructuringElement(shape=cv2.MORPH_CROSS,ksize=(3,3))
    print(kernel)
    img=cv2.erode(src=img,kernel=kernel,iterations=1)
    cv2.imshow('img_src',img_src)
    cv2.imshow('img',img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
if __name__ == '__main__':
    print('Pycharm')
    # ErodeFilterRect()
    # ErodeFilterELLIPSE()
    ErodeFilterCROSS()

至此,关于Python OpenCV中获取卷积核的实现方法介绍完毕,更多相关Python OpenCV卷积核内容可搜索本站历史文章或继续浏览后续文章,感谢大家的支持!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表