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除法运算小技巧
Apr 05 Python
Python中字典的基础知识归纳小结
Aug 19 Python
Python多线程爬虫简单示例
Mar 04 Python
python自动截取需要区域,进行图像识别的方法
May 17 Python
在dataframe两列日期相减并且得到具体的月数实例
Jul 03 Python
解决python通过cx_Oracle模块连接Oracle乱码的问题
Oct 18 Python
Django框架使用mysql视图操作示例
May 15 Python
关于PyTorch源码解读之torchvision.models
Aug 17 Python
python爬虫 urllib模块反爬虫机制UA详解
Aug 20 Python
利用Python绘制有趣的万圣节南瓜怪效果
Oct 31 Python
window环境pip切换国内源(pip安装异常缓慢的问题)
Dec 31 Python
使用Django框架创建项目
Jun 10 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在特殊字符前加斜杠的实现代码
2011/07/17 PHP
SESSION信息保存在哪个文件目录下以及能够用来保存什么类型的数据
2012/06/17 PHP
PHP下打开phpMyAdmin出现403错误的问题解决方法
2013/05/23 PHP
Laravel使用Queue队列的技巧汇总
2019/09/02 PHP
JS 继承实例分析
2008/11/04 Javascript
JS匀速运动演示示例代码
2013/11/26 Javascript
jquery通过a标签删除table中的一行的代码
2013/12/02 Javascript
深入理解Javascript作用域与变量提升
2013/12/09 Javascript
js实现弹窗插件功能实例代码分享
2013/12/12 Javascript
JavaScript中对象property的读取和写入方法介绍
2014/12/30 Javascript
JavaScript错误处理
2015/02/03 Javascript
BootStrap初学者对弹出框和进度条的使用感觉
2016/06/27 Javascript
jQuery实现鼠标经过购物车出现下拉框代码(推荐)
2016/07/21 Javascript
js仿腾讯QQ的web登陆界面
2016/08/19 Javascript
Vue CLI 3搭建vue+vuex最全分析(推荐)
2018/09/27 Javascript
小程序显示弹窗时禁止下层的内容滚动实现方法
2019/03/20 Javascript
json 带斜杠时如何解析的实现
2019/08/12 Javascript
[03:18]DOTA2放量测试专访820:希望玩家加入国服大家庭
2013/08/25 DOTA
[02:12]Dota 2 推出全新英雄—— 电炎绝手
2019/08/23 DOTA
Python实现将xml导入至excel
2015/11/20 Python
Python设计模式中单例模式的实现及在Tornado中的应用
2016/03/02 Python
在CMD命令行中运行python脚本的方法
2018/05/12 Python
Python运维之获取系统CPU信息的实现方法
2018/06/11 Python
Python Matplotlib绘图基础知识代码解析
2020/08/31 Python
CSS3的resize属性使用初探
2015/09/27 HTML / CSS
利用CSS3实现单选框动画特效示例代码
2016/09/26 HTML / CSS
哈利波特商店:Harry Potter Shop
2018/11/30 全球购物
字符串str除首尾字符外的其他字符按升序排列
2013/03/08 面试题
什么是命名空间(NameSpace)
2015/11/24 面试题
简历里的自我评价
2014/01/31 职场文书
解除劳动关系协议书范文
2014/09/11 职场文书
关于运动会的广播稿
2014/09/22 职场文书
2014年房产经纪人工作总结
2014/12/08 职场文书
大学生心理健康教育心得体会
2016/01/12 职场文书
MySQL库表名大小写的选择
2021/06/05 MySQL
使用Oracle命令进行数据库备份与还原
2021/12/06 Oracle