OPenCV版本:4.4

IDE:VS2017

功能描述

简述:执行先进的形态学的变换。

函数 cv::morphologyEx使用腐蚀和膨胀的作为基本的操作来进行高级的形态学的变换。

任何操作都能就地执行,在多通道图像中,每个通道独立进行处理。

闭运算通俗讲其实就是先膨胀后腐蚀的操作。

那么函数闭运算是干什么用的呢?

1.消除黑色的空洞区域。

2.平滑物体的轮廓。

3.连接邻近的物体

4.连接断开的轮廓线。

5.平滑边界的同时不改变面积

函数原型

CV_EXPORTS_W void morphologyEx( InputArray src, OutputArray dst,int op, 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 or CV_64F.

  • 参数 dst 和源图像同样大小和类型的目标图像。

  • 参数 op 形态学操作的类型, 详见:MorphTypes

  • 参数 kernel 结构元素。Kernel 可以通过使用getStructuringElement来创建。

  • 参数 anchor 元素中的锚点的位置,负值表示锚点在核中心。

  • 参数 iterations 腐蚀和膨胀的迭代次数。

  • 参数 borderType 像素外推方法。详见:BorderTypes, BORDER_WRAP不支持。

  • 参数 borderValue 固定边缘的情况下的边缘值。缺省值含有一个特殊的意义 。The default value has a special
    meaning.

    参考 dilate, erode, getStructuringElement

    注意: 迭代次数是膨胀或者腐蚀操作的次数,例如,一个两次迭代操作的闭操作(MORPH_CLOSE)相当于成功应用:膨胀 -> 膨胀->腐蚀-> 腐蚀 (并不是 膨胀->腐蚀->膨胀-> 腐蚀)

源码示例

#include <iostream>
#include <opencv2/opencv.hpp>int main()
{cv::Mat image = cv::imread("D:\\OpenCVtest\\images\\anna.png");if (image.empty()){std::cout << "image read failed!" << std::endl;cv::waitKey(0);return 0;}//自定义核cv::Mat element = getStructuringElement(cv::MORPH_RECT, cv::Size(5, 5));//闭运算cv::Mat result;cv::morphologyEx(image, result, cv::MORPH_CLOSE, element, cv::Point(-1, -1), 2);cv::imshow("原图", image);cv::imshow("闭运算结果图", result);cv::waitKey(0);return 0;
}

运行结果:

闭运算后的图像:

做了两次迭代运算,字体变得平滑了些,小的黑色的空洞区域没了。

OpenCV形态学变换函数morphologyEx()闭运算的使用相关推荐

  1. OpenCV形态学变换函数morphologyEx()顶帽运算的使用

    OPenCV版本:4.4 IDE:VS2017 功能描述 简述:执行先进的形态学的变换的顶帽运算. 函数 cv::morphologyEx使用腐蚀和膨胀的作为基本的操作来进行高级的形态学的变换. 任何 ...

  2. OpenCV形态学变换函数morphologyEx()梯度运算的使用

    OPenCV版本:4.4 IDE:VS2017 功能描述 简述:执行先进的形态学的变换. 函数 cv::morphologyEx使用腐蚀和膨胀的作为基本的操作来进行高级的形态学的变换. 任何操作都能就 ...

  3. OpenCV形态学变换函数morphologyEx()开运算的使用

    OPenCV版本:4.4 IDE:VS2017 功能描述 简述:执行先进的形态学的变换. 函数 cv::morphologyEx使用腐蚀和膨胀的作为基本的操作来进行高级的形态学的变换. 任何操作都能就 ...

  4. OpenCV形态学变换函数morphologyEx()黑帽运算的使用

    OPenCV版本:4.4 IDE:VS2017 功能描述 简述:执行先进的形态学的变换的黑帽运算. 函数 cv::morphologyEx使用腐蚀和膨胀的作为基本的操作来进行高级的形态学的变换. 任何 ...

  5. opencv 形态学变换 morphologyEx函数

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

  6. 【新星计划】Python OpenCV 形态学应用—图像开运算与闭运算

    开运算  开运算=先腐蚀运算,再膨胀运算(看上去把细微连在一起的两块目标分开了) 开运算的效果图如下图所示: 开运算总结: (1)开运算能够除去孤立的小点,毛刺和小桥,而总的位置和形状不便. (2)开 ...

  7. 形态学操作——开闭运算、顶帽底(黑)帽变换

    膨胀和腐蚀运算的问题: 边缘形状发生了变化,膨胀发生了扩张,腐蚀发生了收缩 目标物体变形,对识别时的特征提取会造成影响 解决方法: 开操作: B对A的开操作就是先B对A腐蚀,紧接着用B对结果进行膨胀 ...

  8. C++ OpenCV形态学操作--开闭操作,形态学梯度,顶帽,黑帽

    https://my.oschina.net/u/4582134/blog/4582844

  9. 【youcans 的 OpenCV 例程200篇】117. 形态学操作之顶帽运算

    欢迎关注 『youcans 的 OpenCV 例程 200 篇』 系列,持续更新中 欢迎关注 『youcans 的 OpenCV学习课』 系列,持续更新中 [youcans 的 OpenCV 例程 2 ...

最新文章

  1. 2022-2028年中国数字电视产业投资分析及前景预测报告(全卷)
  2. 以太坊RLP机制分析
  3. linux的ftp服务器
  4. Spring MVC拦截器+注解方式实现防止表单重复提交
  5. [function.require]: Failed opening required 杰奇cms
  6. Android之关于电话录音原理,目前的方法还是只能录MIC
  7. libmysqld_dev linux,解决mysql安装mysqld doesn\'t exist or is not-鸟哥のlinux-ChinaUnix博客
  8. 【报告分享】5G网络切片分级白皮书.pdf(附下载链接)
  9. 第十三章 hadoop机架感知
  10. 三面头条,靠P9级算法分享的两本算法pdf书籍,轻松拿到offer
  11. 皮尔森卡方检验pearson chi-square 与 费舍尔精确检验fisher's exact test
  12. python统计词频并进行可视化显示_python统计词频
  13. Workbench Command——cifti格式操作,如何制作label文件即 Human_MMP.lh.label.gii?
  14. 40行Python代码,实现卷积特征可视化
  15. classpath、path、JAVA_HOME的作用及JAVA环境变量配置 (转)
  16. 2021-11-06
  17. java哪几种运算符_java运算符有哪些
  18. 关于不使用firefly补丁对系统进行美化的探讨(转)
  19. 迅雷链同构多链框架解析
  20. 地图与定位(五)高德地图服务一

热门文章

  1. boost::fibers::unbuffered_channel用法的测试程序
  2. boost::describe模块宏BOOST_DESCRIBE_PP_IS_EMPTY的测试程序
  3. GDCM:将DICOM文件和XML文件相互转换的测试程序
  4. ITK:将图像粘贴到另一个
  5. ITK:将像素缓冲区导入到图像中
  6. VTK:Qt之ShowEvent
  7. VTK:相互作用之InteractorStyleTerrain
  8. OpenCV基于ARM的Linux系统的交叉编译
  9. c++Insertion Sort插入排序的实现算法(附完整源码)
  10. C语言实现珠排序bead sort算法(附完整源码)