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 中使用 GLOBAL引发的一系列问题
Oct 12 Python
python执行使用shell命令方法分享
Nov 08 Python
速记Python布尔值
Nov 09 Python
python决策树之CART分类回归树详解
Dec 20 Python
Python 数据处理库 pandas 入门教程基本操作
Apr 19 Python
numpy创建单位矩阵和对角矩阵的实例
Nov 29 Python
python GUI编程(Tkinter) 创建子窗口及在窗口上用图片绘图实例
Mar 04 Python
Python并发concurrent.futures和asyncio实例
May 04 Python
python的Jenkins接口调用方式
May 12 Python
详解Python流程控制语句
Oct 28 Python
用python进行视频剪辑
Nov 02 Python
Python中的socket网络模块介绍
Jul 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
How do I change MySQL timezone?
2008/03/26 PHP
使用PHPMYADMIN操作mysql数据库添加新用户和数据库的方法
2010/04/02 PHP
Ext.data.PagingMemoryProxy分页一次性读取数据的实现代码
2010/04/07 PHP
php的一些小问题
2010/07/03 PHP
PHP中开发XML应用程序之基础篇 添加节点 删除节点 查询节点 查询节
2010/07/09 PHP
php实现多维数组中每个单元值(数字)翻倍的方法
2015/02/16 PHP
php检查是否是ajax请求的方法
2015/04/16 PHP
PHP Socket网络操作类定义与用法示例
2017/08/30 PHP
使用jQuery Ajax功能时需要注意的一个问题(内存溢出)
2012/05/30 Javascript
jQuery动态添加、删除元素的方法
2014/01/09 Javascript
基于豆瓣API+Angular开发的web App
2015/01/02 Javascript
jQuery实现图片文字淡入淡出效果
2015/12/21 Javascript
JavaScript实现点击单元格改变背景色的方法
2016/02/12 Javascript
JS+CSS3模拟溢出滚动效果
2016/08/12 Javascript
javascript基本数据类型及类型检测常用方法小结
2016/12/14 Javascript
微信小程序Server端环境配置详解(SSL, Nginx HTTPS,TLS 1.2 升级)
2017/01/12 Javascript
nodejs中使用HTTP分块响应和定时器示例代码
2017/03/19 NodeJs
Javascript中八种遍历方法的执行速度深度对比
2017/04/25 Javascript
Vue+axios实现统一接口管理的方法
2018/07/23 Javascript
解决vue-cli webpack打包开启Gzip 报错问题
2019/07/24 Javascript
js中复选框的取值及赋值示例详解
2020/10/18 Javascript
Python中IPYTHON入门实例
2015/05/11 Python
python3中dict(字典)的使用方法示例
2017/03/22 Python
python实现决策树分类算法
2017/12/21 Python
python实现教务管理系统
2018/03/12 Python
Scrapy框架爬取西刺代理网免费高匿代理的实现代码
2019/02/22 Python
浅谈spring boot 集成 log4j 解决与logback冲突的问题
2020/02/20 Python
Python爬虫+tkinter界面实现历史天气查询的思路详解
2021/02/22 Python
现代绅士日常奢侈品:Todd Snyder
2019/12/13 全球购物
五年级科学教学反思
2014/02/05 职场文书
军训鉴定表自我鉴定
2014/02/13 职场文书
《我的第一本书》教学反思
2014/02/15 职场文书
三年级评语大全
2014/04/23 职场文书
招标承诺书
2014/08/30 职场文书
学校党风廉政建设调研报告
2015/01/01 职场文书
《桂花雨》教学反思
2016/02/19 职场文书