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 httplib,smtplib使用方法
Sep 06 Python
Python 迭代器与生成器实例详解
May 18 Python
Python 从一个文件中调用另一个文件的类方法
Jan 10 Python
对DataFrame数据中的重复行,利用groupby累加合并的方法详解
Jan 30 Python
解决Pycharm后台indexing导致不能run的问题
Jun 27 Python
PYTHON如何读取和写入EXCEL里面的数据
Oct 28 Python
python求绝对值的三种方法小结
Dec 04 Python
Python数组拼接np.concatenate实现过程
Apr 18 Python
python不同版本的_new_不同点总结
Dec 09 Python
python wsgiref源码解析
Feb 06 Python
python+opencv实现视频抽帧示例代码
Jun 11 Python
python中24小时制转换为12小时制的方法
Jun 18 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/05/29 PHP
PHP utf-8编码问题,utf8编码,数据库乱码,页面显示输出乱码
2013/04/08 PHP
laravel 获取当前url的别名方法
2019/10/11 PHP
js图片自动切换效果处理代码
2013/05/07 Javascript
jquery与js函数冲突的两种解决方法
2013/09/09 Javascript
跨域传值即主页面与iframe之间互相传值
2013/12/09 Javascript
深入探讨JavaScript、JQuery屏蔽网页鼠标右键菜单及禁止选择复制
2014/06/10 Javascript
jQuery简单实现网页选项卡特效
2014/11/24 Javascript
基于jquery实现瀑布流布局
2020/06/28 Javascript
vue2.0 中#$emit,$on的使用详解
2017/06/07 Javascript
详解vue2 $watch要注意的问题
2017/09/08 Javascript
vue项目上传Github预览的实现示例
2018/11/06 Javascript
微信小程序如何利用getCurrentPages进行页面传值
2019/07/01 Javascript
JavaScript中判断为整数的多种方式及保留两位小数的方法
2019/09/09 Javascript
vue如何使用rem适配
2021/02/06 Vue.js
python实现图片批量剪切示例
2014/03/25 Python
Python入门及进阶笔记 Python 内置函数小结
2014/08/09 Python
Python中的lstrip()方法使用简介
2015/05/19 Python
在Linux下使用Python的matplotlib绘制数据图的教程
2015/06/11 Python
Python学习小技巧之利用字典的默认行为
2017/05/20 Python
django文档学习之applications使用详解
2018/01/29 Python
详解python:time模块用法
2019/03/25 Python
python多进程下实现日志记录按时间分割
2019/07/22 Python
Python生命游戏实现原理及过程解析(附源代码)
2019/08/01 Python
对Python 中矩阵或者数组相减的法则详解
2019/08/26 Python
买卖正宗运动鞋:GOAT
2019/12/06 全球购物
出纳岗位职责范本
2013/12/01 职场文书
经济管理专业自荐信
2013/12/30 职场文书
机房搬迁方案
2014/05/01 职场文书
先进个人申报材料
2014/12/30 职场文书
大国崛起观后感
2015/06/02 职场文书
永远是春天观后感
2015/06/12 职场文书
2016中学教师读书心得体会
2016/01/13 职场文书
汉语拼音教学反思
2016/02/22 职场文书
检讨书范文
2019/04/16 职场文书
Redis集群节点通信过程/原理流程分析
2022/03/18 Redis