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的While循环语句的使用方法
Oct 13 Python
Python中的FTP通信模块ftplib的用法整理
Jul 08 Python
浅谈Python由__dict__和dir()引发的一些思考
Oct 30 Python
利用Python找出序列中出现最多的元素示例代码
Dec 08 Python
python 通过xml获取测试节点和属性的实例
Mar 31 Python
python树莓派红外反射传感器
Jan 21 Python
在pyqt5中QLineEdit里面的内容回车发送的实例
Jun 21 Python
Python Subprocess模块原理及实例
Aug 26 Python
如何在django中运行scrapy框架
Apr 22 Python
基于pandas向csv添加新的行和列
May 25 Python
Django url 路由匹配过程详解
Jan 22 Python
Python测试框架pytest高阶用法全面详解
Jun 01 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
ThinkPHP3.0略缩图不能保存到子目录的解决方法
2012/09/30 PHP
CI框架源码阅读,系统常量文件constants.php的配置
2013/02/28 PHP
php var_export与var_dump 输出的不同
2013/08/09 PHP
destoon之一键登录设置
2014/06/21 PHP
实例简介PHP的一些高级面向对象编程的特性
2015/11/27 PHP
php基于CodeIgniter实现图片上传、剪切功能
2016/05/14 PHP
学习thinkphp5.0验证类使用方法
2017/11/16 PHP
laravel实现上传图片,并且制作缩略图,按照日期存放的代码
2019/10/16 PHP
javascript代码运行不出来执行错误的可能情况整理
2013/10/18 Javascript
获得Javascript对象属性个数的示例代码
2013/11/21 Javascript
jquery获取radio值实例
2014/10/16 Javascript
简单谈谈Javascript中类型的判断
2015/10/19 Javascript
JavaScript数组复制详解
2017/02/02 Javascript
微信小程序 获取session_key和openid的实例
2017/08/17 Javascript
JavaScript 中Date对象的格式化代码方法汇总
2017/09/06 Javascript
bootstrap响应式工具使用详解
2017/11/29 Javascript
Angular 5.x 学习笔记之Router(路由)应用
2018/04/08 Javascript
jQuery实现带右侧索引功能的通讯录示例【附源码下载】
2018/04/17 jQuery
解决vue单页面修改样式无法覆盖问题
2019/08/05 Javascript
js 实现 list转换成tree的方法示例(数组到树)
2019/08/18 Javascript
[45:59]完美世界DOTA2联赛PWL S2 FTD vs GXR 第二场 11.22
2020/11/24 DOTA
使用Python编写类UNIX系统的命令行工具的教程
2015/04/15 Python
Python数据类型详解(四)字典:dict
2016/05/12 Python
Python第三方库xlrd/xlwt的安装与读写Excel表格
2017/01/21 Python
Python简单网络编程示例【客户端与服务端】
2017/05/26 Python
Python 3中print函数的使用方法总结
2017/08/08 Python
基于python实现上传文件到OSS代码实例
2020/05/09 Python
Pycharm编辑器功能之代码折叠效果的实现代码
2020/10/15 Python
德国高品质男装及配饰商城:Cultizm(Raw Denim原色牛仔裤)
2018/04/16 全球购物
英国家庭家具、照明和花园家具购物网站:Furniture123
2018/12/31 全球购物
驻村工作先进事迹
2014/08/14 职场文书
一份恶作剧的检讨书
2014/09/13 职场文书
公司员工安全协议书
2014/11/21 职场文书
新课程改革心得体会
2016/01/22 职场文书
Nginx域名转发使用场景代码实例
2021/03/31 Servers
Go语言实现Base64、Base58编码与解码
2021/07/26 Golang