OpenCV+python实现膨胀和腐蚀的示例


Posted in Python onDecember 21, 2020

1,概念及原理:

膨胀(Dilating) (或)
(1)将图像 A 与任意形状的内核 (B),通常为正方形或圆形,进行卷积。
(2)内核 B 有一个可定义的 锚点, 通常定义为内核中心点。
(3)进行膨胀操作时,将内核 B 划过图像A,将内核 B 覆盖区域的最大相素值提取,并代替锚点位置的相素。显然,这一最大化操作将会导致图像中的亮区开始”扩展” (因此有了术语膨胀 dilation )。

以3*3的内核为例:

OpenCV+python实现膨胀和腐蚀的示例

OpenCV+python实现膨胀和腐蚀的示例

腐蚀(Eroding) (与)
(1)腐蚀在形态学操作家族里是膨胀操作的孪生姐妹。它提取的是内核覆盖下的相素最小值。
(2)进行腐蚀操作时,将内核 B 划过图像,将内核 B 覆盖区域的最小相素值提取,并代替锚点位置的相素。

OpenCV+python实现膨胀和腐蚀的示例

OpenCV+python实现膨胀和腐蚀的示例

值得注意的是:腐蚀和膨胀是对白色部分(高亮部分)而言的,不是黑色部分。 膨胀就是图像中的高亮部分进行膨胀,“邻域扩张”,效果图拥有比原图更大的高亮区域。腐蚀就是原图中高亮部分被腐蚀,“邻域被蚕食”,效果图拥有比原图更小的高亮区域。

源代码:

import cv2 as cv
import numpy as np


def erode_demo(image):
  # print(image.shape)
  gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
  ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY | cv.THRESH_OTSU)
  #cv.imshow("binary", binary)
  kernel = cv.getStructuringElement(cv.MORPH_RECT, (15, 15))#定义结构元素的形状和大小
  dst = cv.erode(binary, kernel)#腐蚀操作
  cv.imshow("erode_demo", dst)


def dilate_demo(image):
  #print(image.shape)
  gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
  ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY | cv.THRESH_OTSU)
  #cv.imshow("binary", binary)
  kernel = cv.getStructuringElement(cv.MORPH_RECT, (5, 5))#定义结构元素的形状和大小
  dst = cv.dilate(binary, kernel)#膨胀操作
  cv.imshow("dilate_demo", dst)



src = cv.imread("F:/images/test01.png")
cv.namedWindow("input image", cv.WINDOW_AUTOSIZE)
cv.imshow("input image", src)
erode_demo(src)
dilate_demo(src)

cv.waitKey(0)

cv.destroyAllWindows()

运行结果:

OpenCV+python实现膨胀和腐蚀的示例

OpenCV+python实现膨胀和腐蚀的示例

OpenCV+python实现膨胀和腐蚀的示例

到此这篇关于OpenCV+python实现膨胀和腐蚀的示例的文章就介绍到这了,更多相关OpenCV 膨胀和腐蚀内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
从Python程序中访问Java类的简单示例
Apr 20 Python
python实现SOM算法
Feb 23 Python
浅谈DataFrame和SparkSql取值误区
Jun 09 Python
使用 Visual Studio Code(VSCode)搭建简单的Python+Django开发环境的方法步骤
Dec 17 Python
python正则爬取某段子网站前20页段子(request库)过程解析
Aug 10 Python
python3实现带多张图片、附件的邮件发送
Aug 10 Python
python 定义类时,实现内部方法的互相调用
Dec 25 Python
tensorflow模型保存、加载之变量重命名实例
Jan 21 Python
QML用PathView实现轮播图
Jun 03 Python
Python趣味实例,实现一个简单的抽奖刮刮卡
Jul 18 Python
django项目中使用云片网发送短信验证码的实现
Jan 19 Python
Python中super().__init__()测试以及理解
Dec 06 Python
python opencv肤色检测的实现示例
Dec 21 #Python
OpenCV+Python3.5 简易手势识别的实现
Dec 21 #Python
如何使用python-opencv批量生成带噪点噪线的数字验证码
Dec 21 #Python
python 录制系统声音的示例
Dec 21 #Python
用python发送微信消息
Dec 21 #Python
关于多种方式完美解决Python pip命令下载第三方库的问题
Dec 21 #Python
Python爬虫模拟登陆哔哩哔哩(bilibili)并突破点选验证码功能
Dec 21 #Python
You might like
php注入实例
2006/10/09 PHP
PHP 多进程 解决难题
2009/06/22 PHP
PHP+ajaxfileupload+jcrop插件完美实现头像上传剪裁
2014/06/09 PHP
解决yii2左侧菜单子级无法高亮问题的方法
2016/05/08 PHP
Grid得到选择行数据的方法总结
2011/01/17 Javascript
javascript重复绑定事件造成的后果说明
2013/03/02 Javascript
在easyUI开发中,出现jquery.easyui.min.js函数库问题的解决办法
2015/09/11 Javascript
JS函数arguments数组获得实际传参数个数的实现方法
2016/05/28 Javascript
由简入繁实现Jquery树状结构的方法(推荐)
2016/06/10 Javascript
jQuery flip插件实现的翻牌效果示例【附demo源码下载】
2016/09/20 Javascript
jQuery实现文字自动横移
2017/01/08 Javascript
javascript回调函数的概念理解与用法分析
2017/05/27 Javascript
微信小程序实现下拉菜单切换效果
2020/03/30 Javascript
jQuery实现的鼠标拖动浮层功能示例【拖动div等任何标签】
2018/12/29 jQuery
JavaScript格式化json和xml的方法示例
2019/01/22 Javascript
使用微信SDK自定义分享的方法
2019/07/03 Javascript
解决vue里a标签值解析变量,跳转页面,前面加默认域名端口的问题
2020/07/22 Javascript
JavaScript实现单点登录的示例
2020/09/23 Javascript
vue + el-form 实现的多层循环表单验证
2020/11/25 Vue.js
netbeans7安装python插件的方法图解
2013/12/24 Python
Python内置函数OCT详解
2016/11/09 Python
Python实现读取文件最后n行的方法
2017/02/23 Python
浅谈Python里面小数点精度的控制
2018/07/16 Python
详解关于Django中ORM数据库迁移的配置
2018/10/08 Python
在Django中预防CSRF攻击的操作
2020/03/13 Python
最新茶叶店创业计划书
2014/01/14 职场文书
《一个中国孩子的呼声》教学反思
2014/02/12 职场文书
周年庆典主持词
2014/04/02 职场文书
党的群众路线对照检查材料
2014/08/27 职场文书
晋江市委常委班子四风问题整改工作方案
2014/10/26 职场文书
黄河绝恋观后感
2015/06/08 职场文书
2015年主婚人婚礼致辞
2015/07/28 职场文书
中学校园广播稿
2015/08/18 职场文书
小学作文之描写天气
2019/08/15 职场文书
导游词之上海东方明珠塔
2019/09/25 职场文书
Python关于OS文件目录处理的实例分享
2021/05/23 Python