当前位置: 首页 > news >正文

python学opencv|读取图像(六十)先后使用cv2.erode()函数和cv2.dilate()函数实现图像处理

【1】引言

前序学习进程中,先后了解了使用cv2.erode()函数和cv2.dilate()函数实现图像腐蚀和膨胀处理的效果,相关文章链接为:

python学opencv|读取图像(五十八)使用cv2.erode()函数实现图像腐蚀处理-CSDN博客

python学opencv|读取图像(五十九)使用cv2.dilate()函数实现图像膨胀处理-CSDN博客

不难看出,这两种图像处理方法其实是反着来的,腐蚀会削减一些像素,膨胀会填充一些像素,如果先腐蚀后膨胀,图像也许会有新的效果,这就是本次学习的目标。

【2】代码测试

先腐蚀后膨胀的代码设计非常简单,这里直接给出完整代码:

import cv2 as cv  # 引入CV模块
import numpy as np  # 引入numpy模块# 定义核
k = np.zeros((3, 3), np.uint8)  # 定义核
k1 = np.ones((5, 5), np.uint8)  # 定义核
k2 = np.ones((7, 7), np.uint8)  # 定义核# 读取图片
srcm = cv.imread('srcck.png')  # 读取图像srcck.png# 腐蚀计算
dst = cv.erode(srcm, k)  # 图像取平均值,像素核大小为(3,3)
dst1 = cv.erode(srcm, k1)  # 图像取平均值,像素核大小为(3,3)
dst2 = cv.erode(srcm, k2)  # 图像取平均值,像素核大小为(3,3)
dstpz1 = cv.dilate(dst, k) #图像膨胀运算,膨胀核大小为(3,3)
dstpz2 = cv.dilate(dst1, k1) #图像膨胀运算,膨胀核大小为(3,3)
dstpz3 = cv.dilate(dst2, k2) #图像膨胀运算,膨胀核大小为(3,3)
# 显示结果
cv.imshow('srcm ', srcm)
cv.imshow('dstpz1', dstpz1)
cv.imwrite('dstpz1.png', dstpz1)
cv.imshow('dstpz2 ', dstpz2)
cv.imwrite('dstpz2.png', dstpz2)
cv.imshow('dstpz3 ', dstpz3)
cv.imwrite('dstpz3.png', dstpz3)# 窗口控制
cv.waitKey()  # 图像不关闭
cv.destroyAllWindows()  # 释放所有窗口

由于腐蚀和膨胀都需要一个核,所以在引入必要模块后,定义了核:

# 定义核
k = np.zeros((3, 3), np.uint8)  # 定义核
k1 = np.ones((5, 5), np.uint8)  # 定义核
k2 = np.ones((7, 7), np.uint8)  # 定义核

之后按照先腐蚀后膨胀的顺序,对图片依次处理: 

# 腐蚀和膨胀计算
dst = cv.erode(srcm, k)  # 图像取平均值,像素核大小为(3,3)
dst1 = cv.erode(srcm, k1)  # 图像取平均值,像素核大小为(5,5)
dst2 = cv.erode(srcm, k2)  # 图像取平均值,像素核大小为(7,7)
dstpz1 = cv.dilate(dst, k) #图像膨胀运算,膨胀核大小为(3,3)
dstpz2 = cv.dilate(dst1, k1) #图像膨胀运算,膨胀核大小为(5,5)
dstpz3 = cv.dilate(dst2, k2) #图像膨胀运算,膨胀核大小为(7,7)

代码运行相关的图像有:

图1 初始图像srcck.png

图2 先腐蚀后膨胀图像dstpz1.png

图3 先腐蚀后膨胀图像dstpz2.png

图4 先腐蚀后膨胀图像dstpz3.png

由图2至图4可知,随之先腐蚀后膨胀图像操作核的扩大,图像也越来越趋向于模糊,不过中央的主体形象得到很好的保留,周围的细节被逐渐放弃。

如果想进一步测试,比如增强膨胀的效果,就可以把膨胀核变小,比如修改第三章图像膨胀核大小为:

dstpz3 = cv.dilate(dst2, k) #图像膨胀运算,膨胀核大小为(7,7)

此时代码运行后获得的图像为:

图5 先腐蚀后膨胀图像dstpz3.png-膨胀作用凸显

由图5可知,减小膨胀核后,膨胀作用凸显,人物形象虽然模糊,但轮廓显著放大。

【3】总结

使用python+opencv检验了对图像先后使用cv2.erode()函数和cv2.dilate()函数进行先腐蚀后膨胀操作的效果。

 

相关文章:

python学opencv|读取图像(六十)先后使用cv2.erode()函数和cv2.dilate()函数实现图像处理

【1】引言 前序学习进程中,先后了解了使用cv2.erode()函数和cv2.dilate()函数实现图像腐蚀和膨胀处理的效果,相关文章链接为: python学opencv|读取图像(五十八)使用cv2.erode()函数实现图像腐蚀处理-CSDN博客 pytho…...

AI能帮谷歌SEO做什么?

现在没用过AI写内容的人,应该不多了,用ChatGPT写文章,用MidJourney画图,用各种工具做调研,AI已经成为SEO玩家的“标配”。但AI到底能帮SEO做到什么?省钱?省时间?还是更重要的东西&am…...

SSA-TCN麻雀算法优化时间卷积神经网络时间序列预测未来Matlab实现

SSA-TCN麻雀算法优化时间卷积神经网络时间序列预测未来Matlab实现 目录 SSA-TCN麻雀算法优化时间卷积神经网络时间序列预测未来Matlab实现预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.Matlab实现SSA-TCN麻雀算法优化时间卷积神经网络时间序列预测未来(优…...

【机器学习】数据预处理之数据归一化

数据预处理之数据归一化 一、摘要二、数据归一化概念三、数据归一化实现方法3.1 最值归一化方法3.2 均值方差归一化方法 一、摘要 本文主要讲述了数据归一化(Feature Scaling)的重要性及其方法。首先通过肿瘤大小和发现时间的例子,说明了不同…...

【专题】2024-2025人工智能代理深度剖析:GenAI 前沿、LangChain 现状及演进影响与发展趋势报告汇总PDF洞察(附原数据表)

原文链接:https://tecdat.cn/?p39630 在科技飞速发展的当下,人工智能代理正经历着深刻的变革,其能力演变已然成为重塑各行业格局的关键力量。从早期简单的规则执行,到如今复杂的自主决策与多智能体协作,人工智能代理…...

非递减子序列(力扣491)

这道题的难点依旧是去重,但是与之前做过的子集类问题的区别就是,这里是求子序列,意味着我们不能先给数组中的元素排序。因为子序列中的元素的相对位置跟原数组中的相对位置是一样的,如果我们改变数组中元素的顺序,子序…...

网站快速收录策略:提升爬虫抓取效率

本文转自:百万收录网 原文链接:https://www.baiwanshoulu.com/102.html 要实现网站快速收录并提升爬虫抓取效率,可以从以下几个方面入手: 一、优化网站结构与内容 清晰的网站结构 设计简洁明了的网站导航,确保爬虫…...

系统思考—自我超越

“人们往往认为是个人的能力限制了他们,但事实上,是组织的结构和惯性思维限制了他们的潜力。”—彼得圣吉 最近和一家行业隐形冠军交流,他们已经是领域第一,老板却依然要求:核心团队都要自我超越,攻坚克难…...

苍穹外卖-菜品分页查询

3. 菜品分页查询 3.1 需求分析和设计 3.1.1 产品原型 系统中的菜品数据很多的时候,如果在一个页面中全部展示出来会显得比较乱,不便于查看,所以一般的系统中都会以分页的方式来展示列表数据。 菜品分页原型: 在菜品列表展示时…...

子集II(力扣90)

这道题与子集(力扣78)-CSDN博客 的区别就在于集合中的元素会重复,那么还按照之前的代码来操作就会得到重复的子集,因此这道题的重点就在于去重。需要注意的是,这里的去重指的是在同一层递归中,而在往下递归的子集中可以取重复的元…...

user、assistant、system三大角色在大语言模型中的作用(通俗解释)

1 概述 在大语言模型中,通常涉及到三种角色:用户(user)、助手(assistant)和系统(system)。简单来说,和大模型对话其实是三个人的电影。 2 角色定义 2.1 系统&#xf…...

LeetCode 3444.使数组包含目标值倍数的最小增量

给你两个数组 nums 和 target 。 在一次操作中,你可以将 nums 中的任意一个元素递增 1 。 返回要使 target 中的每个元素在 nums 中 至少 存在一个倍数所需的 最少操作次数 。 示例 1: 输入:nums [1,2,3], target [4] 输出&#xff1a…...

2月9日星期日今日早报简报微语报早读

2月9日星期日,农历正月十二,早报#微语早读。 1、2025WTT新加坡大满贯:王楚钦林诗栋获得男双冠军; 2、海南万宁快查快处一起缺斤短两案件:拟罚款5万元,责令停业3个月; 3、四川宜宾市筠连县山体…...

MOSSE目标跟踪算法详解

1. 引言 MOSSE算法(Multi-Object Spectral Tracking with Energy Regularization)是多目标跟踪领域的一座里程碑式成果,被认为是开创性的工作,为后续研究奠定了重要基础。该算法通过创新性地结合频域特征分析与能量正则化方法&am…...

生成式聊天机器人 -- 基于Pytorch + Global Attention + 双向 GRU 实现的SeqToSeq模型 -- 下

生成式聊天机器人 -- 基于Pytorch Global Attention 双向 GRU 实现的SeqToSeq模型 -- 下 训练Masked 损失单次训练过程迭代训练过程 测试贪心解码(Greedy decoding)算法实现对话函数 训练和测试模型完整代码 生成式聊天机器人 – 基于Pytorch Global Attention 双向 GRU 实…...

本地部署的DeepSeek-R1-32B与DeepSeek-R1-7B模型效果对比

本地部署的DeepSeek-R1-32B与DeepSeek-R1-7B模型效果对比 在当今人工智能快速发展的时代,大语言模型(Large Language Model, LLM)的应用场景日益广泛。无论是企业级应用还是个人开发,本地部署大语言模型已经成为一种趋势。DeepSeek-R1-32B和DeepSeek-R1-7B作为DeepSeek系列…...

AWS Fargate

AWS Fargate 是一个由 Amazon Web Services (AWS) 提供的无服务器容器计算引擎。它使开发者能够运行容器化应用程序,而无需管理底层的服务器或虚拟机。简而言之,AWS Fargate 让你只需关注应用的容器本身,而不需要管理运行容器的基础设施&…...

表单与交互:HTML表单标签全面解析

目录 前言 一.HTML表单的基本结构 基本结构 示例 二.常用表单控件 文本输入框 选择控件 文件上传 按钮 综合案例 三.标签的作用 四.注意事项 前言 HTML&#xff08;超文本标记语言&#xff09;是构建网页的基础&#xff0c;其中表单&#xff08;<form>&…...

【电机控制器】STC8H1K芯片——低功耗

【电机控制器】STC8H1K芯片——低功耗 文章目录 [TOC](文章目录) 前言一、芯片手册说明二、IDLE模式三、PD模式四、PD模式唤醒五、实验验证1.接线2.视频&#xff08;待填&#xff09; 六、参考资料总结 前言 使用工具&#xff1a; 1.STC仿真器烧录器 提示&#xff1a;以下是本…...

win10 llamafactory模型微调相关① || Ollama运行微调模型

目录 微调相关 1.微调结果评估 2.模型下载到本地 导出转换&#xff0c;Ollama运行 1.模型转换&#xff08;非常好的教程&#xff01;&#xff09; 2.Ollama 加载GGUF模型文件 微调相关 1.微调结果评估 【06】LLaMA-Factory微调大模型——微调模型评估_llamafactory评估-C…...

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…...

边缘计算医疗风险自查APP开发方案

核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...

在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:

在 HarmonyOS 应用开发中&#xff0c;手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力&#xff0c;既支持点击、长按、拖拽等基础单一手势的精细控制&#xff0c;也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档&#xff0c…...

java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别

UnsatisfiedLinkError 在对接硬件设备中&#xff0c;我们会遇到使用 java 调用 dll文件 的情况&#xff0c;此时大概率出现UnsatisfiedLinkError链接错误&#xff0c;原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用&#xff0c;结果 dll 未实现 JNI 协…...

佰力博科技与您探讨热释电测量的几种方法

热释电的测量主要涉及热释电系数的测定&#xff0c;这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中&#xff0c;积分电荷法最为常用&#xff0c;其原理是通过测量在电容器上积累的热释电电荷&#xff0c;从而确定热释电系数…...

MySQL 部分重点知识篇

一、数据库对象 1. 主键 定义 &#xff1a;主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 &#xff1a;确保数据的完整性&#xff0c;便于数据的查询和管理。 示例 &#xff1a;在学生信息表中&#xff0c;学号可以作为主键&#xff…...

消息队列系统设计与实践全解析

文章目录 &#x1f680; 消息队列系统设计与实践全解析&#x1f50d; 一、消息队列选型1.1 业务场景匹配矩阵1.2 吞吐量/延迟/可靠性权衡&#x1f4a1; 权衡决策框架 1.3 运维复杂度评估&#x1f527; 运维成本降低策略 &#x1f3d7;️ 二、典型架构设计2.1 分布式事务最终一致…...

Python 高级应用10:在python 大型项目中 FastAPI 和 Django 的相互配合

无论是python&#xff0c;或者java 的大型项目中&#xff0c;都会涉及到 自身平台微服务之间的相互调用&#xff0c;以及和第三发平台的 接口对接&#xff0c;那在python 中是怎么实现的呢&#xff1f; 在 Python Web 开发中&#xff0c;FastAPI 和 Django 是两个重要但定位不…...

数据分析六部曲?

引言 上一章我们说到了数据分析六部曲&#xff0c;何谓六部曲呢&#xff1f; 其实啊&#xff0c;数据分析没那么难&#xff0c;只要掌握了下面这六个步骤&#xff0c;也就是数据分析六部曲&#xff0c;就算你是个啥都不懂的小白&#xff0c;也能慢慢上手做数据分析啦。 第一…...

二叉树-144.二叉树的前序遍历-力扣(LeetCode)

一、题目解析 对于递归方法的前序遍历十分简单&#xff0c;但对于一位合格的程序猿而言&#xff0c;需要掌握将递归转化为非递归的能力&#xff0c;毕竟递归调用的时候会调用大量的栈帧&#xff0c;存在栈溢出风险。 二、算法原理 递归调用本质是系统建立栈帧&#xff0c;而非…...