void morphologyEx(InputArray src, OutputArray dst, int op, InputArray kernel, Point anchor=Point(-1,-1), intiterations=1, int borderType=BORDER_CONSTANT, const Scalar& borderValue=morphologyDefaultBorderValue() )

函数形式:

函数参数:

  • 第一个参数,InputArray类型的src,输入图像,即源图像,填Mat类的对象即可。图像位深应该为以下五种之一:CV_8U, CV_16U,CV_16S, CV_32F 或CV_64F。
  • 第二个参数,OutputArray类型的dst,即目标图像,函数的输出参数,需要和源图片有一样的尺寸和类型。
  • 第三个参数,int类型的op,表示形态学运算的类型,可以是如下之一的标识符:
    • MORPH_OPEN – 开运算(Opening operation)
    • MORPH_CLOSE – 闭运算(Closing operation)
    • MORPH_GRADIENT -形态学梯度(Morphological gradient)
    • MORPH_TOPHAT - “顶帽”(“Top hat”)
    • MORPH_BLACKHAT - “黑帽”(“Black hat“)

另有CV版本的标识符也可选择,如CV_MOP_CLOSE,CV_MOP_GRADIENT,CV_MOP_TOPHAT,CV_MOP_BLACKHAT,这应该是OpenCV1.0系列版本遗留下来的标识符,和上面的“MORPH_OPEN”一样的效果。

  • 第四个参数,InputArray类型的kernel,形态学运算的内核。若为NULL时,表示的是使用参考点位于中心3x3的核。我们一般使用函数 getStructuringElement配合这个参数的使用。getStructuringElement函数会返回指定形状和尺寸的结构元素(内核矩阵)。关于getStructuringElement我们上篇文章中讲过了,这里为了大家参阅方便,再写一遍:

其中,getStructuringElement函数的第一个参数表示内核的形状,我们可以选择如下三种形状之一:

  • 矩形: MORPH_RECT
  • 交叉形: MORPH_CROSS
  • 椭圆形: MORPH_ELLIPSE

而getStructuringElement函数的第二和第三个参数分别是内核的尺寸以及锚点的位置。

我们一般在调用erode以及dilate函数之前,先定义一个Mat类型的变量来获得getStructuringElement函数的返回值。对于锚点的位置,有默认值Point(-1,-1),表示锚点位于中心。且需要注意,十字形的element形状唯一依赖于锚点的位置。而在其他情况下,锚点只是影响了形态学运算结果的偏移。

  • 第五个参数,Point类型的anchor,锚的位置,其有默认值(-1,-1),表示锚位于中心。
  • 第六个参数,int类型的iterations,迭代使用函数的次数,默认值为1。
  • 第七个参数,int类型的borderType,用于推断图像外部像素的某种边界模式。注意它有默认值BORDER_ CONSTANT。
  • 第八个参数,const Scalar&类型的borderValue,当边界为常数时的边界值,有默认值morphologyDefaultBorderValue(),一般我们不用去管他。需要用到它时,可以看官方文档中的createMorphologyFilter()函数得到更详细的解释。

getStructuringElement函数相关的调用示例代码如下

int g_nStructElementSize = 3; //结构元素(内核矩阵)的尺寸//获取自定义核
Mat element =getStructuringElement(MORPH_RECT,Size(2*g_nStructElementSize+1,2*g_nStructElementSize+1),Point(g_nStructElementSize, g_nStructElementSize ));

opencv代码:

//-----------------------------------【头文件包含部分】---------------------------------------
//            描述:包含程序所依赖的头文件
//----------------------------------------------------------------------------------------------
#include <opencv2/opencv.hpp>
#include<opencv2/highgui/highgui.hpp>
#include<opencv2/imgproc/imgproc.hpp>//-----------------------------------【命名空间声明部分】---------------------------------------
//            描述:包含程序所使用的命名空间
//-----------------------------------------------------------------------------------------------
using namespace cv;
//-----------------------------------【main( )函数】--------------------------------------------
//            描述:控制台应用程序的入口函数,我们的程序从这里开始
//-----------------------------------------------------------------------------------------------
int main( )
{//载入原始图  Mat image = imread("1.jpg");  //工程目录下应该有一张名为1.jpg的素材图//创建窗口  namedWindow("【原始图】开运算"); namedWindow("【效果图】开运算"); //显示原始图 imshow("【原始图】开运算", image); //定义核Mat element = getStructuringElement(MORPH_RECT, Size(15, 15)); //进行形态学操作morphologyEx(image,image, MORPH_OPEN, element);//显示效果图 imshow("【效果图】开运算", image); waitKey(0); return 0;
}

morphologyEx函数相关推荐

  1. OpenCV-Python图像形态变换概述及morphologyEx函数介绍

    ☞ ░ 前往老猿Python博客 https://blog.csdn.net/LaoYuanPython ░ 一.形态变换概念 图像形态变换又称为形态学图像处理.图像形态学,它是基于数学形态学(Mat ...

  2. opencv 形态学变换 morphologyEx函数

    opencv 形态学变换 morphologyEx函数 demo:http://download.csdn.net/detail/keen_zuxwang/9852594 高级形态学变换: 开运算: ...

  3. 计算机视觉开源库OpenCV形态学morphologyEx函数之开运算和闭运算

    数学形态学操作可以分为二值形态学和灰度形态学,灰度形态学由二值形态学扩展而来.数学形态学有2个基本的运算,即腐蚀和膨胀,而腐蚀和膨胀通过结合又形成了开运算和闭运算. 开运算就是先腐蚀再膨胀 kerne ...

  4. OpenCV 常用函数汇总(bitwise_*、pointPolygonTest、morphologyEx)

    两图像间的像素操作 cv::bitwise_and() 函数原型 //像素求"与"运算CV_EXPORTS_W void bitwise_and(InputArray src1,I ...

  5. OpenCV学习笔记(八):形态学morpholgy(2):开/闭运算,形态学梯度、顶帽/黑帽morphologyEx()

    OpenCV学习笔记(八):形态学morpholgy(2):开.闭运算,形态学梯度.顶帽.黑帽:morphologyEx() 数学形态学(Mathematical morphology) 是一门建立在 ...

  6. Open_cv中常用函数的原型及参数解释(一)

    这里的函数主要总结自浅墨的系列博客,总结仅为了在使用时可以快速检索 具体Demo和教程请访问浅墨的Open_cv系列:访问地址 1.保存图像的数据结构:Mat Mat myMat= imread(&q ...

  7. OpenCV4一部分函数目录

    OpenCV4函数+基本功能说明 引言 一.基础函数使用 Imread函数--读取图片 namedWindow函数--创建自定名窗口 imshow函数--将自定名的窗口展示 destroyWindow ...

  8. OpenCV每日函数 专栏简述(陆续整理中)

    一.OpenCV概述 OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习软件库.OpenCV库拥有超过 2500 种优化算法,其中包 ...

  9. opencv —— morphology形态学操作函数讲解(python)

    opencv -- morphology形态学操作函数讲解 目录 opencv -- morphology形态学操作函数讲解 形态学滤波:morphologyEx 函数 开运算:先腐蚀后膨胀. 闭运算 ...

最新文章

  1. 《C++面向对象高效编程(第2版)》——2.20 什么是多线程安全类
  2. tomcat关闭 异常报告
  3. ubuntu 下安装 VIM 依赖vim-common错误
  4. 重庆工商大学c语言实验一答案,重庆工商大学嵌入式实验考试题目答案 - 副本.doc...
  5. 人工智能火了 高端人才成了香饽饽
  6. 【渝粤教育】国家开放大学2018年春季 8256-21T药物治疗学 参考试题
  7. python gettext_python gettext使用
  8. 随想录(git操作)
  9. Qt--音乐播放器 V2.0
  10. TensorFlow中的优化算法
  11. 多媒体中控系统的发展及现状
  12. Linux驱动BSP(I2C 驱动实验)
  13. zabbix 5.0所有依赖包_开源的Zabbix报表系统ZbxTable正式发布!
  14. android仿微信发送位置,Android仿微信发送位置-百度地图
  15. FlexiTimer2库下载 无偿 分享 仅供学习
  16. C++性能优化笔记-11-使用向量操作
  17. matlab的仿真实验报告答案,模糊控制MALTAB系统仿真实验报告
  18. 吉林教育杂志吉林教育杂志社吉林教育编辑部2022年第28期目录
  19. LTE FDD PSS/SSS/MIB时频资源位置
  20. 研发过程管理与质量控制

热门文章

  1. Pat乙级 1049 数列的片段和
  2. PAT C++常用函数(持续更新)
  3. 提审马甲包被拒问题记录
  4. 惠普:利用大数据创造更智能的IT服务台
  5. Oracle 自己主动内存管理 SGA、PGA 具体解释
  6. 测试人员面临的测试挑战和必备技能
  7. [JS] - onmusewheel事件(兼容IE,FF,opera,safari,chrome)
  8. 艾伟_转载:ASP.NET模板引擎技术
  9. VMware 没网线 虚拟机和主机互联
  10. 终于知道如何才能取得HtmlEditor里的数据了