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 命令行也可以自动补全
Nov 30 Python
Python的类实例属性访问规则探讨
Jan 30 Python
Python版微信红包分配算法
May 04 Python
Python中subprocess模块用法实例详解
May 20 Python
详解python3百度指数抓取实例
Dec 12 Python
python实现linux下抓包并存库功能
Jul 18 Python
python RabbitMQ 使用详细介绍(小结)
Nov 08 Python
Python中最大递归深度值的探讨
Mar 05 Python
python打印n位数“水仙花数”(实例代码)
Dec 25 Python
pytorch数据预处理错误的解决
Feb 20 Python
keras训练曲线,混淆矩阵,CNN层输出可视化实例
Jun 15 Python
Python实现一个优先级队列的方法
Jul 31 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网站提速三大“软”招
2006/10/09 PHP
PHP读取文件的常见几种方法
2016/11/03 PHP
laravel Task Scheduling(任务调度)在windows下的使用详解
2019/10/22 PHP
Javascript调试工具(下载)
2007/01/09 Javascript
JavaScript 对象、函数和继承
2009/07/07 Javascript
Javascript弹出窗口的各种方法总结
2013/11/11 Javascript
跟我学习javascript的prototype原型和原型链
2015/11/18 Javascript
利用jquery制作滚动到指定位置触发动画
2016/03/26 Javascript
详解vue-validator(vue验证器)
2017/01/16 Javascript
微信小程序实现添加手机联系人功能示例
2017/11/30 Javascript
手淘flexible.js框架使用和源代码讲解小结
2018/10/15 Javascript
socket io与vue-cli的结合使用的示例代码
2018/11/01 Javascript
浅谈Vue数据响应思路之数组
2018/11/06 Javascript
Node.js爬虫如何获取天气和每日问候详解
2019/08/26 Javascript
Layui table field初始化加载时进行隐藏的方法
2019/09/19 Javascript
Nodejs封装类似express框架的路由实例详解
2020/01/05 NodeJs
[01:13:01]2018DOTA2亚洲邀请赛 4.4 淘汰赛 TNC vs VG 第三场
2018/04/05 DOTA
详解Python中的装饰器、闭包和functools的教程
2015/04/02 Python
Python实现周期性抓取网页内容的方法
2015/11/04 Python
书单|人生苦短,你还不用python!
2017/12/29 Python
详解如何将python3.6软件的py文件打包成exe程序
2018/10/09 Python
python找出完数的方法
2018/11/12 Python
解决nohup执行python程序log文件写入不及时的问题
2019/01/14 Python
详解Python是如何实现issubclass的
2019/07/24 Python
解决Tensorflow 内存泄露问题
2020/02/05 Python
Python接口自动化判断元素原理解析
2020/02/24 Python
NIHAOMARKET官方海外旗舰店:意大利你好华人超市
2018/01/27 全球购物
韩国保养品、日本药妆购物网:小三美日
2018/12/30 全球购物
Nisbets爱尔兰:英国最大的厨房和餐饮设备供应商
2019/01/26 全球购物
中国跨镜手机配件批发在线商店:TVC-Mall
2019/08/20 全球购物
信用社主任竞聘演讲稿
2014/05/23 职场文书
售房协议书
2014/08/19 职场文书
员工自我评价范文
2015/03/11 职场文书
酒店圣诞节活动总结
2015/05/06 职场文书
学校推普周活动总结
2015/05/07 职场文书
MYSQL如何查看操作日志详解
2022/05/30 MySQL