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 可爱的大小写
Sep 06 Python
python3编写C/S网络程序实例教程
Aug 25 Python
Python进程间通信用法实例
Jun 04 Python
python 简单照相机调用系统摄像头实现方法 pygame
Aug 03 Python
python 运用Django 开发后台接口的实例
Dec 11 Python
python实现猜拳小游戏
Apr 05 Python
python能做什么 python的含义
Oct 12 Python
django 前端页面如何实现显示前N条数据
Mar 16 Python
使用Python和百度语音识别生成视频字幕的实现
Apr 09 Python
tensorflow模型的save与restore,及checkpoint中读取变量方式
May 26 Python
pygame用blit()实现动画效果的示例代码
May 28 Python
Python函数参数分类原理详解
May 28 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
Ajax PHP简单入门教程代码
2008/04/25 PHP
PHP面向对象程序设计方法实例详解
2016/12/24 PHP
PhpStorm的使用教程(本地运行PHP+远程开发+快捷键)
2020/03/26 PHP
javascript YUI 读码日记之 YAHOO.util.Dom - Part.4
2008/03/22 Javascript
Javascript valueOf 使用方法
2008/12/28 Javascript
js no-repeat写法 背景不重复
2009/03/18 Javascript
jquery 图片Silhouette Fadeins渐显效果
2010/02/07 Javascript
flexigrid 类似ext grid的JS表格代码
2010/07/17 Javascript
不提示直接关闭网页窗口的JS示例代码
2013/12/17 Javascript
JavaScript在IE和FF下的兼容性问题
2014/05/19 Javascript
JavaScript中的无阻塞加载性能优化方案
2014/10/10 Javascript
JavaScript使用Replace进行字符串替换的方法
2015/04/14 Javascript
JavaScript函数使用的基本教程
2015/06/04 Javascript
javascript获取select值的方法分析
2015/07/02 Javascript
详解JavaScript语言的基本语法要求
2015/11/20 Javascript
JavaScript中setTimeout和setInterval函数的传参及调用
2016/03/11 Javascript
JS实现回到页面顶部动画效果的简单实例
2016/05/24 Javascript
vue-resourse将json数据输出实例
2017/03/08 Javascript
原生js轮播特效
2017/05/18 Javascript
JavaScript实现打印星型金字塔功能实例分析
2017/09/27 Javascript
vue 实现复制内容到粘贴板clipboard的方法
2018/03/17 Javascript
JS module的导出和导入的实现代码
2019/02/25 Javascript
微信小程序如何实现全局重新加载
2019/06/05 Javascript
jQuery实现手风琴效果(蒙版)
2020/01/11 jQuery
十条建议帮你提高Python编程效率
2016/02/16 Python
Python 制作糗事百科爬虫实例
2016/09/22 Python
Python+threading模块对单个接口进行并发测试
2019/06/25 Python
python中自带的三个装饰器的实现
2019/11/08 Python
深入浅析css3 中display box使用方法
2015/11/25 HTML / CSS
Omio俄罗斯:一次搜索公共汽车、火车和飞机的机票
2018/11/17 全球购物
J2EE系统只能是基于web
2015/09/08 面试题
行政专员工作职责
2013/12/22 职场文书
《傅雷家书》教学反思
2014/04/20 职场文书
办护照工作证明
2014/10/01 职场文书
谢师宴邀请函
2015/02/02 职场文书
2015年法制宣传月活动总结
2015/03/26 职场文书