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中实现结构相似的函数调用方法
Mar 10 Python
Python中字符串格式化str.format的详细介绍
Feb 17 Python
解决python matplotlib imshow无法显示的问题
May 24 Python
python中文编码与json中文输出问题详解
Aug 24 Python
win7 x64系统中安装Scrapy的方法
Nov 18 Python
Python第三方Window模块文件的几种安装方法
Nov 22 Python
Python匿名函数及应用示例
Apr 09 Python
利用PyCharm Profile分析异步爬虫效率详解
May 08 Python
python安装virtualenv虚拟环境步骤图文详解
Sep 18 Python
pandas中read_csv、rolling、expanding用法详解
Apr 21 Python
Python图片验证码降噪和8邻域降噪
Aug 30 Python
python3 字符串str和bytes相互转换
Mar 23 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文件缓存内容保存格式实例分析
2014/08/20 PHP
PHP isset empty函数相关面试题及解析
2020/12/11 PHP
用JavaScript页面不刷新时全选择,全删除(GridView)
2009/04/14 Javascript
javascript函数中的arguments参数
2010/08/01 Javascript
JQuery入门——事件切换之hover()方法应用介绍
2013/02/05 Javascript
Extjs Gird 支持中文拼音排序实现代码
2013/04/15 Javascript
JS应用正则表达式转换大小写示例
2014/09/18 Javascript
jQuery中ajax的post()方法用法实例
2014/12/26 Javascript
一款基于jQuery的图片场景标注提示弹窗特效
2015/01/05 Javascript
JS实现一个按钮的方法
2015/02/05 Javascript
初探nodeJS
2017/01/24 NodeJs
jQuery控制元素隐藏和显示
2017/03/03 Javascript
浅谈 Vue v-model指令的实现原理
2017/06/08 Javascript
JS实现求数组起始项到终止项之和的方法【基于数组扩展函数】
2017/06/13 Javascript
vue1.0和vue2.0的watch监听事件写法详解
2018/09/11 Javascript
vue-cli 脚手架基于Nightwatch的端到端测试环境的过程
2018/09/30 Javascript
vue3修改link标签默认icon无效问题详解
2019/10/09 Javascript
js函数和this用法实例分析
2020/03/13 Javascript
vue实现五子棋游戏
2020/05/28 Javascript
javascript实现点击小图显示大图
2020/11/29 Javascript
node.js 基于 STMP 协议和 EWS 协议发送邮件
2021/02/14 Javascript
一起来了解一下JavaScript的预编译(小结)
2021/03/01 Javascript
python 接口测试response返回数据对比的方法
2018/02/11 Python
Python列表(List)知识点总结
2019/02/18 Python
Python函数装饰器常见使用方法实例详解
2019/03/30 Python
Python字典的概念及常见应用实例详解
2019/10/30 Python
如何解决tensorflow恢复模型的特定值时出错
2020/02/06 Python
PyCharm刷新项目(文件)目录的实现
2020/02/14 Python
python导入库的具体方法
2020/06/18 Python
Smashbox官网:美国知名彩妆品牌
2017/01/05 全球购物
德国汽车零件和汽车配件网上商店:kfzteile24
2018/11/14 全球购物
职业生涯规划设计步骤
2014/01/12 职场文书
班级课外活动总结
2014/07/09 职场文书
综治维稳工作承诺书
2014/08/30 职场文书
暑期社会实践新闻稿
2015/07/17 职场文书
在HTML中引入CSS的几种方式介绍
2021/12/06 HTML / CSS