图像形态学的作用是简化图像数据,保持基本图像特性,取出不相干结构等。
目录:
1.erode()
2.dilate()
3.morphologyEx()//MORPH_OPEN
4.morphologyEx()//MORPH_CLOSE

1.erode()
腐蚀运算
作用:去除一些粘连像素,以及去除噪音

参数一: InputArray src: Mat类,通道数量不限,但深度应为CV_8U,CV_16U…
参数二:OutputArray dst: 输出图像,需要有和原图片一样的尺寸和类型
参数三:InputArray kernel: 腐蚀操作的内核,一般用3*3的核
参数四:Point anchor:锚的位置,默认用(-1,-1)
参数五:int iterations:使用函数的次数

2.dilate()
膨胀运算
作于:由于无法实现理想的二值化,使得原本被连通的像素集被分成不同的连通域,从而影响目标的提取,可以通过膨胀恢复连通性

参数一:InputArray src: Mat类,通道数量不限,但深度应为CV_8U,CV_16U…
参数二:OutputArray dst: 输出图像,需要有和原图片一样的尺寸和类型
参数三: InputArray kernel: 腐蚀操作的内核,一般用3*3的核
参数四: Point anchor:锚的位置,默认用(-1,-1)
参数五:int iterations:使用函数的次数

由于单纯的腐蚀运算或膨胀运算仍旧不能达到预期的效果,还可以进行开运算或闭运算。
3.morphologyEx()//MORPH_OPEN
开运算
先对图像进行3×3腐蚀,再对图像进行3×3膨胀

参数一:InputArray src: Mat类,通道数量不限,但深度应为CV_8U,CV_16U… .
参数二:OutputArray dst: 输出图像,需要有和原图片一样的尺寸和类型
参数三: int op:表示形态学运算的类型,如MORPH_OPEN、MORPH_CLOSE分别代表开运算和闭运算
参数四:InputArray kernel: 腐蚀操作的内核,一般用3*3的核
参数五:Point anchor:锚的位置,一般用(-1,-1)
参数六:int iterations:使用函数的次数

4.morphologyEx()//MORPH_CLOSE
闭运算
先对图像进行膨胀,再对膨胀结果进行腐蚀

参考代码如下:

#include<opencv2\opencv.hpp>
#include<iostream>using namespace std;
using namespace cv;int main()
{Mat img = imread("D:\\photogallery\\其他\\硬币.png");Mat imgGray,imgThresh, imgErode, imgDil, imgOpen, imgClose;//转灰度二值化cvtColor(img, imgGray, COLOR_BGR2GRAY);threshold(imgGray, imgThresh, 100, 255, THRESH_OTSU);Mat element = getStructuringElement(MORPH_RECT, Size(3, 3), Point(-1, -1));//腐蚀erode(imgThresh, imgErode, element, Point(-1, -1), 1);//膨胀dilate(imgThresh, imgDil, element, Point(-1, -1), 1);//开运算morphologyEx(imgThresh, imgOpen, MORPH_OPEN, element, Point(-1, -1), 1);//闭运算morphologyEx(imgThresh, imgClose, MORPH_CLOSE, element);imshow("img", img);imshow("imgGray", imgGray);imshow("imgThresh", imgThresh);imshow("imgErode", imgErode);imshow("imgDil", imgDil);imshow("imgOpen", imgOpen);imshow("imgClose", imgClose);waitKey(0);return 0;
}

运行结果如下:

【opencv】基本图像形态学操作相关推荐

  1. OpenCV中图像形态学操作

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自:视学算法 图像形态学是图像处理的分支学科,在二值图像处理 ...

  2. 2020.11.01 使用OpenCV进行图像形态学操作(开、闭、梯度)【OpenCV C++】

    进行基础的图像形态学操作练习 (开操作.闭操作.梯度.顶帽.黑帽操作) 源代码: // #include <opencv2/opencv.hpp> #include <iostrea ...

  3. opencv 实现图像形态学操作 膨胀和腐蚀 开闭运算 形态学梯度 顶帽和黑帽

    图像膨胀和腐蚀 图解 原理及python实现 更多内容:图像膨胀和腐蚀原理及python实现 opencv中膨胀和腐蚀函数 dilation = cv.dilate(img, kernel) # 膨胀 ...

  4. opencv c++ 图像形态学操作

    1.图像的形态学操作 包括图像的腐蚀.膨胀.开.闭.形态学梯度.顶帽.黑帽.分支主题.结构元素等操作. 具体概念参考:(41条消息) 图像处理-形态学处理_Good@dz的博客-CSDN博客_图像处理 ...

  5. opencv python 图像形态学操作/图像腐蚀/图像膨胀/开运算/闭运算/顶帽/黑帽

    Morphological Transformations 1图像腐蚀 腐蚀的基本思想:侵蚀前景物体的边界(总是试图保持前景为白色):内核在图像中滑动(如在2D卷积中).只有当内核下的所有像素都是1时 ...

  6. OpenCV与图像处理学习六——图像形态学操作:腐蚀、膨胀、开、闭运算、形态学梯度、顶帽和黑帽

    OpenCV与图像处理学习六--图像形态学操作:腐蚀.膨胀.开.闭运算.形态学梯度.顶帽和黑帽 四.图像形态学操作 4.1 腐蚀和膨胀 4.1.1 图像腐蚀 4.1.2 图像膨胀 4.2 开运算与闭运 ...

  7. Opencv学习笔记四——图像形态学操作

    需要的库和自定义函数 import cv2 import numpy as np import matplotlib.pyplot as pltdef cv_show(name, mat):cv2.i ...

  8. opencv常用的形态学操作

    导读 在使用opencv做图像处理的时候,我们经常会需要用到一些基础的图像形态学操作腐蚀.膨胀.通过这些基本的形态学操作我们可以实现去噪以及图像的切割等. 形态学变换是基于图像形状的基础变换,它只能在 ...

  9. 详细分析图像形态学操作

    原文链接:http://blog.csdn.net/poem_qianmo/article/details/23710721 还是比教科书上的图文并茂的多.以防删除,如有疑问或者版权问题,请移步原博客 ...

最新文章

  1. Android View 测量流程(Measure)完全解析
  2. C#编程语言之Unix时间戳转换为本地时间的方法
  3. [工具]-脚本自动化工具:按照linux kernel标准格式化输出文件(format_file)
  4. requests.get(url)执行没反应_翟至宇:执行路上,从未停歇
  5. (原创)c#学习笔记08--面向对象编程简介02--OOP技术05--运算符重载
  6. 【渝粤教育】 国家开放大学2020年春季 1129土木工程力学(本) 参考试题
  7. JavaEE实战班第十一天
  8. layui表单验证方式大全
  9. 我应该如何解释接口和抽象类之间的区别?
  10. 使用GDAL对HDF数据进行校正
  11. Ubuntu 字体安装以及 vscode字体配置
  12. IPO屡战屡败 而立之年WPS 能否闯关成功?
  13. T9 PDF如何转存为高清图片
  14. 蜗牛学院:中国人,努力获得了荣誉却要压抑克制
  15. lm做自相关做几阶_lm检验(lm检验怎么判断是几阶自相关)
  16. Android股票列表联动
  17. 小程序接入h5页面_h5页面和小程序交互
  18. 9月有哪些程序员新书与您相约?
  19. 足球/篮球专业术语(Football and Basketball terms)
  20. Django之爱鲜蜂项目开发 day01 (二)

热门文章

  1. 表单title文字两端对齐(2、3、4个字都对齐)
  2. 科研笔记(八) 深度学习及其在 WiFi 人体感知中的应用(下)
  3. LeNet模型详解以及代码实现
  4. 童年情结-我和我的狗狗们
  5. UE4 死活打不开工程,卡在91%就闪退了
  6. linux 修改文件内容sed,linux下通过sed命令直接修改文件内容
  7. access函数确认文件或文件夹的访问权限
  8. WattOS:一个稳又快的轻量级 Linux 发行版
  9. 租赁小程序源码芝麻免押租机平台手机租赁代运营
  10. nextline函数_在JAVA中Scanner中的next()和nextLine()为什么不能一起使用?