• OpenCV(三十):图像膨胀


    1.图像膨胀原理

            图像膨胀的原理是将一个结构元素(也称为核或模板)在图像上滑动,并将其与图像中对应位置的像素进行比较。如果结构元素的所有像素与图像中对应位置的像素都匹配,那么该位置的像素值保持不变。如果结构元素的任何一个像素与图像中对应位置的像素不匹配,那么 图像中对应位置的像素被置为1,从而改变了图像的形状和结构。

    2.结构元素生成函数getStructuringElement()

    Mat cv::getStructuringElement ( int    shape,

    Size ksize,

    Point anchor = point(-1,-1)

    )

    • shape:结构元素的种类。
    • ksize:结构元素的尺寸大小。
    • anchor:中心点的位置,默认参数为结构元素的几何中心点。

    其中结构元素的种类有:

    3.图像膨胀操作函数dilate()

    void cv::dilate ( InputArray  src,

    OutputArray            dst,

    InputArray                kernel,

    Point                         anchor = point(-1,-1),

    int                            iterations = 1,

    int                            borderType = BORDER_CONSTANT,

    const Scalar & borderValue = morphologyDefaultBorderValue()

    )

    • src: 输入的待膨胀图像,图像的通道数可以是任意的,但是图像的数据类型必须是CV_8U,CV_16U,CV_16S,CV_32F或CV_64F之一。
    • dst:腐蚀后的输出图像,与输入图像src具有相同的尺寸和数据类型。
    • kernel:用于膨胀操作的结构元素,可以自己输入,也可以用getStructuringElement0函数生成
    • anchor:中心点在结构元素中的位置,默认参数为结构元素的几何中心点
    • iterations:腐蚀的次数
    • borderType:像素外推法选择标志
    • borderValue:边界不变的边界值。

    4.示例代码:

    1. //图像膨胀
    2. void image_dilate(Mat image){
    3. Mat gray;
    4. cvtColor(image,gray,COLOR_BGR2GRAY);//灰度化
    5. Mat dilate_black1,dilate_black2;
    6. //黑背景图像膨胀
    7. Mat struct1= getStructuringElement(0,Size(3,3));//矩形结构元素
    8. Mat struct2= getStructuringElement(1,Size(3,3));//十字结构元素
    9. dilate(gray,dilate_black1,struct1);//膨胀
    10. dilate(gray,dilate_black2,struct2);
    11. }

  • 相关阅读:
    使用alarm函数实现sleep,使用alarm函数实现对阻塞操作设置超时
    ubuntu 22.04 安装python-pcl
    【Opencv实战】识别水果的软件叫什么?一款超好用的识别软件分享,一秒鉴定(真是活~久~见~啊)
    MFC程序示例
    Halcon 光度立体 缺陷检测
    AspectJ AOP的使用(@Before、@PointCut、@Around等)
    Qt QTableWidget表格的宽度
    【操作系统】基础知识概述
    分库分表
    web初识
  • 原文地址:https://blog.csdn.net/weixin_63357306/article/details/132761417