OpenCV---膨胀与腐蚀

2023-11-14

膨胀

 腐蚀

一:膨胀实现dilate

 

import cv2 as cv
import numpy as np

def dilate_demo(image):  #膨胀
    print(image.shape)
    gray = cv.cvtColor(image,cv.COLOR_BGR2GRAY)
    ret,binary = cv.threshold(gray,0,255,cv.THRESH_BINARY_INV|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("./5.png")  #读取图片
cv.namedWindow("input image",cv.WINDOW_AUTOSIZE)    #创建GUI窗口,形式为自适应
cv.imshow("input image",src)    #通过名字将图像和窗口联系

dilate_demo(src)

cv.waitKey(0)   #等待用户操作,里面等待参数是毫秒,我们填写0,代表是永远,等待用户操作
cv.destroyAllWindows()  #销毁所有窗口 

 

二:实现腐蚀erode

def erode_demo(image):  #腐蚀
    print(image.shape)
    gray = cv.cvtColor(image,cv.COLOR_BGR2GRAY)
    ret,binary = cv.threshold(gray,0,255,cv.THRESH_BINARY_INV|cv.THRESH_OTSU)
    cv.imshow("binary",binary)
    kernel = cv.getStructuringElement(cv.MORPH_RECT,(3,3))  #可以修改卷积核大小来增加腐蚀效果,越大腐蚀越强
    dst = cv.erode(binary,kernel)
    cv.imshow("erode_demo",dst)

src = cv.imread("./5.png")  #读取图片
cv.namedWindow("input image",cv.WINDOW_AUTOSIZE)    #创建GUI窗口,形式为自适应
cv.imshow("input image",src)    #通过名字将图像和窗口联系

erode_demo(src)

cv.waitKey(0)   #等待用户操作,里面等待参数是毫秒,我们填写0,代表是永远,等待用户操作
cv.destroyAllWindows()  #销毁所有窗口

kernel = cv.getStructuringElement(cv.MORPH_RECT,(5,5))

 相关知识补充

(一)可以看做膨胀是将白色区域扩大,腐蚀是将黑色区域扩大

(二)可以不进行灰度处理,对彩色图片进行处理

(1)膨胀

kernel = cv.getStructuringElement(cv.MORPH_RECT, (5, 5))
dst = cv.dilate(src,kernel)
cv.imshow("result",dst)

(2)腐蚀

kernel = cv.getStructuringElement(cv.MORPH_RECT, (5, 5))
dst = cv.erode(src,kernel)
cv.imshow("result",dst)

(三)getStructuringElement方法

 推文:OpenCV中获取不同形状的结构元素getStructuringElement

自定义一个结构元素kernel,要声明一个Mat,然后对Mat的元素赋值;这种方法灵活但略显复杂
OpenCV提供了一个函数getStructuringElement,可以获取常用的结构元素的形状:矩形(包括线形)、椭圆(包括圆形)及十字形。
getStructuringElement的内部并没有什么优化实现,只是封装了一下功能。其原理同样是声明一个Mat,然后求形状,指定Mat的值。
十字形为单线宽。
总之:getStructuringElement是一种更加简便的方法实现一个kernel
MORPH_RECT, MORPH_ELLIPSE, MORPH_CROSS

参数:

cv.getStructuringElement(cv.MORPH_RECT, (3, 3))
def getStructuringElement(shape, ksize, anchor=None): # real signature unknown; restored from __doc__
第一个参数shape:表示内核的形状,有三种形状可以选择
矩形:MORPH_RECT;
交叉形:MORPH_CORSS;
椭圆形:MORPH_ELLIPSE;
第二个参数ksize:是内核的尺寸(n,n)
第三个参数anchor:锚点的位置

返回值:

getStructuringElement函数会返回指定形状和尺寸的结构元素。

 

转载于:https://www.cnblogs.com/ssyfj/p/9276999.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OpenCV---膨胀与腐蚀 的相关文章

  • 是否有解决方法可以通过 CoinGecko API 安全检查?

    我在工作中运行我的代码 一切都很顺利 但在不同的网络 家庭 WiFi 上 我不断收到403访问时出错CoinGecko V3 API https www coingecko com api documentations v3 可以观察到 在
  • 中断 Select 以添加另一个要在 Python 中监视的套接字

    我正在 Windows XP 应用程序中使用 TCP 实现点对点 IPC 我正在使用select and socketPython 2 6 6 中的模块 我有三个 TCP 线程 一个读取线程通常会阻塞select 一个通常等待事件的写入线程
  • 使用 python requests 模块时出现 HTTP 503 错误

    我正在尝试发出 HTTP 请求 但当前可以从 Firefox 浏览器访问的网站响应 503 错误 代码本身非常简单 在网上搜索一番后我添加了user Agent请求参数 但也没有帮助 有人能解释一下如何消除这个 503 错误吗 顺便说一句
  • 与区域指示符字符类匹配的 python 正则表达式

    我在 Mac 上使用 python 2 7 10 表情符号中的标志由一对表示区域指示符号 https en wikipedia org wiki Regional Indicator Symbol 我想编写一个 python 正则表达式来在
  • 使用特定的类/函数预加载 Jupyter Notebook

    我想预加载一个笔记本 其中包含我在另一个文件中定义的特定类 函数 更具体地说 我想用 python 来做到这一点 比如加载一个配置文件 包含所有相关的类 函数 目前 我正在使用 python 生成笔记本并在服务器上自动启动它们 因为不同的
  • 将html数据解析成python列表进行操作

    我正在尝试读取 html 网站并提取其数据 例如 我想查看公司过去 5 年的 EPS 每股收益 基本上 我可以读入它 并且可以使用 BeautifulSoup 或 html2text 创建一个巨大的文本块 然后我想搜索该文件 我一直在使用
  • Python 中的舍入浮点问题

    我遇到了 np round np around 的问题 它没有正确舍入 我无法包含代码 因为当我手动设置值 而不是使用我的数据 时 返回有效 但这是输出 In 177 a Out 177 0 0099999998 In 178 np rou
  • Pandas/Google BigQuery:架构不匹配导致上传失败

    我的谷歌表中的架构如下所示 price datetime DATETIME symbol STRING bid open FLOAT bid high FLOAT bid low FLOAT bid close FLOAT ask open
  • 用枢轴点拟合曲线 Python

    我有下面的图 我想用 2 条线来拟合它 使用 python 我设法适应上半部分 def func x a b x np array x return a x b popt pcov curve fit func up x up y 我想用另
  • 立体太阳图 matplotlib 极坐标图 python

    我正在尝试创建一个与以下类似的简单的立体太阳路径图 http wiki naturalfrequent com wiki Sun Path Diagram http wiki naturalfrequency com wiki Sun Pa
  • Docker 中的 Python 日志记录

    我正在 Ubuntu Web 服务器上的 Docker 容器中测试运行 python 脚本 我正在尝试查找由 Python Logger 模块生成的日志文件 下面是我的Python脚本 import time import logging
  • 从 NumPy ndarray 中选择行

    我只想从 a 中选择某些行NumPy http en wikipedia org wiki NumPy基于第二列中的值的数组 例如 此测试数组的第二列包含从 1 到 10 的整数 gt gt gt test numpy array nump
  • 如何断言 Unittest 上的可迭代对象不为空?

    向服务提交查询后 我会收到一本字典或一个列表 我想确保它不为空 我使用Python 2 7 我很惊讶没有任何assertEmpty方法为unittest TestCase类实例 现有的替代方案看起来并不正确 self assertTrue
  • 如何在 Windows 命令行中使用参数运行 Python 脚本

    这是我的蟒蛇hello py script def hello a b print hello and that s your sum sum a b print sum import sys if name main hello sys
  • 为什么 Pickle 协议 4 中的 Pickle 文件是协议 3 中的两倍,而速度却没有任何提升?

    我正在测试 Python 3 4 我注意到 pickle 模块有一个新协议 因此 我对 2 个协议进行了基准测试 def test1 pickle3 open pickle3 wb for i in range 1000000 pickle
  • 将 Python 中的日期与日期时间进行比较

    所以我有一个日期列表 datetime date 2013 7 9 datetime date 2013 7 12 datetime date 2013 7 15 datetime date 2013 7 18 datetime date
  • 使用for循环时如何获取前一个元素? [复制]

    这个问题在这里已经有答案了 可能的重复 Python 循环内的上一个和下一个值 https stackoverflow com questions 1011938 python previous and next values inside
  • 模拟pytest中的异常终止

    我的多线程应用程序遇到了一个错误 主线程的任何异常终止 例如 未捕获的异常或某些信号 都会导致其他线程之一死锁 并阻止进程干净退出 我解决了这个问题 但我想添加一个测试来防止回归 但是 我不知道如何在 pytest 中模拟异常终止 如果我只
  • 如何应用一个函数 n 次? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 假设我有一个函数 它接受一个参数并返回相同类型的结果 def increment x return x 1 如何制作高阶函数repeat可以
  • 如何计算Python中字典中最常见的前10个值

    我对 python 和一般编程都很陌生 所以请友善 我正在尝试分析包含音乐信息的 csv 文件并返回最常听的前 n 个乐队 从下面的代码中 每听一首歌曲都是一个列表中的字典条目 格式如下 album Exile on Main Street

随机推荐

  • vscode+php8+xdebug 无法安装composer

    1 下载composer 2 安装时出现提示 xdebug 的 远程服务无法连接 Xdebug Step Debug Time out connecting to debugging client waited 200 ms Tried l
  • java从远程url文件流读取文件并下载到本地

    java从远程url文件流读取文件 且下载到本地 写个循环可实现批量 import java io import java net HttpURLConnection import java net URL public class Fil
  • Linux 块设备驱动实验

    一 块设备驱动要远比字符设备驱动复杂得多 不同类型的存储设备又对应不同的驱动子系统 本章我们重点学习一下块设备相关驱动概念 不涉及到具体的存储设备 1 什么是块设备 块设备是针对存储设备的 比如 SD 卡 EMMC NAND Flash N
  • IDEA去除代码中的波浪线(黄色警告线)

    IDEA去除代码中的波浪线 黄色警告线 IDEA中为了减少一定量的重复代码 提醒开发人员注意 会在代码下面出现黄色警告线 但是有时候几行代码的重复没必要扔到一个统一的地方处理 这里还总是提醒 干扰视线 因此 这里根据个人习惯 还是关闭这个功
  • Item-Based Recommendations with Hadoop

    Mahout在MapReduce上实现了Item Based Collaborative Filtering 这里我尝试运行一下 安装Hadoop 从下载Mahout并解压 准备数据 下载1 Million MovieLens Datase
  • Codeforces Round #674 B. Symmetric Matrix(水题)

    题目地址 传送门 题目贴上 题意 给你n种 2x2的矩阵 并且每种矩阵可以无限次使用 问你是否能组成mxm的矩阵 新矩阵必须是严格按照主对角线对称矩阵 思路 首先给你的2x2矩阵 很明显我们不能拼成奇数长宽的矩阵 所以如果m为奇数 直接输出
  • Abstract Class(抽象类)& Abstract Method(抽象方法)

    java中的Abstract Class 抽象类 Abstract Method 抽象方法 Abstract Class 在面向对象的概念中 所有的对象都是通过类来描绘的 但是反过来 并不是所有的类都是用来描绘对象的 如果一个类中没有包含足
  • ZeroTier的planet文件格式分析

    C ProgramData ZeroTier One planet 文件格式 1个字节的类型 TYPE PLANET 1 TYPE MOON 127 8字节的ID 8字节的ts ZT C25519 PUBLIC KEY LEN 64字节的公
  • idea习惯配置记录

    idea 2021 git设置本地文件显示 链接 Settings Preferences Version Control Commit将Use non modal commit interface 取消选中的 use non modal
  • Android 11 锁屏界面 去掉下拉状态栏

    在目录 frameworks base packages SystemUI src com android systemui statusbar phone NotificationPanelViewController java 修改如下
  • 攻防世界-web- lottery

    lottery 41最佳Writeup由 清风77 提供WriteUP 收藏 反馈 难度 3 方向 Web 题解数 17 解出人数 5217 题目来源 XCTF 题目描述 暂无 题目附件 下载附件 题目场景 http 61 147 171
  • 2023哈工大软件工程考研

    0 考研成绩 初试成绩 395 政治 英语一 数学一 专业课 总分 71 76 130 118 395 复试成绩 251 综合测试118 面试133 排名 软专1 12 本部7 83 一校三区33 262 一切都拉下帷幕了 从去年二月到今年
  • Linux 用户、用户组 ( 添加、删除、修改 )

    Linux 使用者管理 http cn linux vbird org linux basic linux basic php part4 鸟哥官网 简体中文 http cn linux vbird org linux basic linu
  • STL实现动态维护有序数组

    使用 容器 vector 函数 v empty v lower bound v insert 代码实现
  • python + pandas读取含有不同空格的txt , csv,excel文件,以及跳过指定错误行数据

    使用pandas读取含有不同空格的txt csv excel文件 若txt文件全为float或者int时候 txt np loadtxt file 此仅适用于全数据类型的txt 文件 且文件内无空数据 txtDF pd DataFrame
  • CCIE理论-第十六篇-IPV6-GRE隧道+IPV6 OVER IPV4 隧道

    CCIE理论 第十六篇 IPV6 GRE隧道 IPV6 OVER IPV4 隧道 IPV6也写了好多篇章 后面还有两篇 一个IPV6的NAT 一个综合实验 那么就结束IPV6到MPLS了 其实还挺多的哈 差不多应该有10篇章都是在讲IPV6
  • 用C语言编写Windows服务程序的五个步骤

    翻译文档 本文适合初级读者 已阅读20305次 文档 代码 工具 用 C 语言编写 Windows 服务程序的五个步骤 原文 Yevgeny Menaker 翻译 Northtibet 下载源代码原文出处 Five Steps to Wri
  • Linux的命令

    Linux的命令分为四个类型 文件操作命令 系统操作命令 文本处理命令和网络操作命令 下面简单介绍一下常用的Linux命令 文件操作命令 ls 列出目录下的所有文件和目录 cd 切换当前目录 mkdir 创建一个新目录 touch 创建新文
  • (下)苹果有开源,但又怎样呢?

    一开始 因为 MacOS X 苹果与 FreeBSD 过往从密 不仅挖来 FreeBSD 创始人 Jordan Hubbard 更是在此基础上开源了 Darwin 但是 苹果并没有给予 Darwin 太多关注 作为苹果的首个开源项目 它算不
  • OpenCV---膨胀与腐蚀

    膨胀 腐蚀 一 膨胀实现dilate import cv2 as cv import numpy as np def dilate demo image 膨胀 print image shape gray cv cvtColor image