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读取图片EXIF信息类库介绍和使用实例
Jul 10 Python
让 python 命令行也可以自动补全
Nov 30 Python
在Python中操作字典之fromkeys()方法的使用
May 21 Python
一个基于flask的web应用诞生 使用模板引擎和表单插件(2)
Apr 11 Python
python3判断url链接是否为404的方法
Aug 10 Python
python爱心表白 每天都是浪漫七夕!
Aug 18 Python
python 读取竖线分隔符的文本方法
Dec 20 Python
pytorch 获取层权重,对特定层注入hook, 提取中间层输出的方法
Aug 17 Python
基于python监控程序是否关闭
Jan 14 Python
Python 实现打印单词的菱形字符图案
Apr 12 Python
python ETL工具 pyetl
Jun 07 Python
基于django和dropzone.js实现上传文件
Nov 24 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
PHPStrom 新建FTP项目以及在线操作教程
2016/10/16 PHP
PHP新特性之字节码缓存和内置服务器
2017/08/11 PHP
php post换行的方法
2020/02/03 PHP
Jquery 类网页微信二维码图块滚动效果具体实现
2013/10/14 Javascript
javascript实现的DES加密示例
2013/10/30 Javascript
JavaScript静态类型检查工具FLOW简介
2015/01/06 Javascript
Js+php实现异步拖拽上传文件
2015/06/23 Javascript
jquery实现简单的二级导航下拉菜单效果
2015/09/07 Javascript
使用json来定义函数,在里面可以定义多个函数的实现方法
2016/10/28 Javascript
JS正则RegExp.test()使用注意事项(不具有重复性)
2016/12/28 Javascript
Bootstrap table表格简单操作
2017/02/07 Javascript
Angular.JS中的this指向详解
2017/05/17 Javascript
基于node.js的fs核心模块读写文件操作(实例讲解)
2017/09/10 Javascript
AngularJS实现注册表单验证功能
2017/10/16 Javascript
Angular实现双向折叠列表组件的示例代码
2017/11/21 Javascript
cropper js基于vue的图片裁剪上传功能的实现代码
2018/03/01 Javascript
vue.js+element-ui动态配置菜单的实例
2018/09/07 Javascript
详解如何解决vue开发请求数据跨域的问题(基于浏览器的配置解决)
2018/11/12 Javascript
新手快速上手webpack4打包工具的使用详解
2019/01/28 Javascript
微信小程序绑定手机号获取验证码功能
2019/10/22 Javascript
全面解析JavaScript Module模式
2020/07/24 Javascript
Pyhton中单行和多行注释的使用方法及规范
2016/10/11 Python
Python 专题四 文件基础知识
2017/03/20 Python
Python中将变量按行写入txt文本中的方法
2018/04/03 Python
Python函数的迭代器与生成器的示例代码
2020/06/18 Python
浅谈HTML5 FileReader分布读取文件以及其方法简介
2017/11/09 HTML / CSS
YOOX美国官方网站:全球著名的多品牌时尚网络概念店
2016/09/11 全球购物
西班牙自行车和跑步商店:Alltricks
2018/07/07 全球购物
英国DIY汽车维修配件网站:DIY Car Service Parts
2019/08/30 全球购物
.NET里面什么时候需要调用垃圾回收
2015/06/01 面试题
会计与审计毕业生自荐信范文
2013/12/30 职场文书
九华山导游词
2015/02/03 职场文书
公司保洁员管理制度
2015/08/04 职场文书
2016年村干部公开承诺书(公开承诺事项)
2016/03/25 职场文书
Vue实现动态查询规则生成组件
2021/05/27 Vue.js
SQL Server数据库查询出现阻塞之性能调优
2022/04/10 SQL Server