Opencv 图像形态学操作
3.1 形态学-腐蚀操作
img = cv2.imread('CSDN.png')
cv2.imshow('CSDN', img)
cv2.waitKey(0)
cv2.destroyAllWindows

如果腐蚀核的覆盖区域内的所有像素值都满足条件(阈值),则中心像素的值保持不变;如果有任何像素值不满足条件,则中心像素的值被设置为0(黑色)。
kernal = np.ones((3, 3), np.unit8)
# 传入3×3的腐蚀核,iterration表示腐蚀的操作次数
erosion = cv2.erode(img, kernal, iteration = 2)
cv2.imshow('erosion', erosion)
cv2.waitKey(0)
cv2.destroyAllWindows()

多余的细线条没有了。
pie = cv2.imread('pie.png')
cv2.imshow('pie', pie)
cv2.waitKey(0)
cv2.destroyAllWindows()

接下来看随着迭代次数变多图像有什么变化
kernel = np.ones((30, 30), np.unit8)
erosion_1 = cv2.erode(pie, kernel, iterations = 1)
erosion_2 = cv2.erode(pie, kernel, iterations = 2)
erosion_3 = cv2.erode(pie, kernel, iterations = 3)
res = np.hstack((erosion_1, erosion_2, erosion_3))
cv2.imshow('res', res)
cv2.waitKey(0)
cv2.destroyAllWindows()

图像越来越瘦
3.2 形态学-膨胀操作
kernal = np.ones((3, 3), np.unit8)
dilation = cv2.dilate(erosion, kernal, iternations = 2)cv2.imshow('dilation', dilation)
cv2.waitKey(0)
cv2.destroyAllWindows

可以看出腐蚀后的线条变细之后,膨胀操作又将线条变粗了
所以我们可以将图像中的噪声点和比结构元素小而且多余需要去除的部分先用腐蚀操作去除,然后再将我们需要的部分用膨胀操作变大。
pie = cv2.imread('pie.png')kernel = np.ones((30, 30), np.unit8)
dilate_1 = cv2.dilate(pie, kernel, iterations = 1)
dilate_2 = cv2.dilate(pie, kernel, iterations = 2)
dilate_3 = cv2.dilate(pie, kernel, iterations = 3)
res = np.hstack((dilate_1, dilate_2, dilate_3))
cv2.imshow('res', res)
cv2.waitKey(0)
cv2.destroyAllWindows()

可以看出随膨胀次数操作变多,这个圆越来越肿。
3.3 开运算与闭运算
开运算:先腐蚀,再膨胀
用于去除小亮物体
img = cv2.imread('CSDN.png')
kernel = np.ones((5, 5), np.unit8)
opening = cv2.morphologyEX(img, cv2.MORPH_OPEN, kernel)cv2.imshow('opening', opening)
cv2.waitKey(0)
cv2.destroyAllWindows()

闭运算:先膨胀,再腐蚀
用于去除小暗物体
img = cv2.imread('CSDN2.png')
cv2.imshow('CSDN2', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

img = cv2.imread('CSDN2.png')kernel = np.ones((5, 5), np.unit8)
closing = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel)cv2.imshow('closing', closing)
cv2.waitKey(0)
cv2.destroyAllWindows()

3.4 梯度运算
梯度运算的结果等同于膨胀操作和腐蚀操作结果的差值,这个操作可以用来检测图像中的物体边缘。
gradient = cv2.morphologyEx(pie, cv2.MORPH_GRADIENT, kernal)cv2.imshow('gradient', gradient)
cv2.waitKey(0)
cv2.destroyAllWindows()

3.5 礼帽与黑帽
礼帽 = 原始输入 - 开运算结果
img = cv2.imread('CSDN.png')
tophat = cv2.morphologyEx(img, cv2.MORPH_TOPHAT, kernel)
cv2.imshow('tophat', tophat)
cv2.waitKey(0)
cv2.destroyAllWindows()

礼帽操作的效果是突出显示那些比结构元素小的物体
开运算之后,原本比结构元素小的物体处理掉,而比结构元素大的物体则几乎保持不变.
用原始输入减去开运算结果后,剩下的是比结构元素小的物体。
黑帽 = 闭运算 - 原始输入
img = cv2.imread('CSDN2.png')
blackhat = cv2.morphologyEx(img, cv2.MORPH_BLACKHAT, kernel)
cv2.imshow('blackhat', blackhat)
cv2.waitKey(0)
cv2.destroyAllWindows()

img = cv2.imread('CSDN.png')
blackhat = cv2.morphologyEx(img, cv2.MORPH_BLACKHAT, kernel)
cv2.imshow('blackhat', blackhat)
cv2.waitKey(0)
cv2.destroyAllWindows()

黑帽操作的效果是用于突出显示比结构元素小的暗物体或凹陷区域。
闭运算之后,原本比结构元素小的物体再膨胀过程中被完全填充,在腐蚀过程也无法恢复。比结构元素大的物体在膨胀又腐蚀后变化不大。
用闭运算结果减去原始输入后,留下来的则是原本的小暗物体的轮廓,只不过变成了亮的小物体。
相关文章:
Opencv 图像形态学操作
3.1 形态学-腐蚀操作 img cv2.imread(CSDN.png) cv2.imshow(CSDN, img) cv2.waitKey(0) cv2.destroyAllWindows如果腐蚀核的覆盖区域内的所有像素值都满足条件(阈值),则中心像素的值保持不变;如果有任何像素值不满足条件&#x…...
Readability.js 与 Newspaper提取网页内容和元数据
在当今信息爆炸的时代,网页内容的提取和处理变得尤为重要。无论是从新闻网站、博客还是教程网站中提取内容,都需要一个高效、准确的工具来帮助我们去除无关信息,提取出有价值的正文内容。这不仅能够提高我们的工作效率,还能让我们…...
小程序Three Dof识别 实现景区AR体验
代码工程 GitCode - 全球开发者的开源社区,开源代码托管平台 dof...
腾讯2025年软件测试面试题
以下是基于腾讯等一线互联网公司软件测试岗位的面试趋势和技术要求,025年出现的软件测试面试题。这些问题涵盖了基础知识、自动化测试、性能测试、安全测试、编程能力等多个方面,供参考和准备。 一、基础知识 软件测试的基本概念...
SSL域名证书怎么续期?
在当今数字化时代,网站的安全性已成为企业和个人不可忽视的重要因素。SSL域名证书作为保障网站数据传输安全的关键工具,其重要性不言而喻。然而,SSL证书并非永久有效,它们通常有一个固定的有效期,到期后需要进行续期以…...
Grok3使用体验与模型版本对比分析
文章目录 Grok的功能DeepSearch思考功能绘画功能Grok 3的独特功能 Grok 3的版本和特点与其他AI模型的比较 最新新闻:Grok3被誉为“地球上最聪明的AI” 最近,xAI公司正式发布了Grok3,并宣称其在多项基准测试中展现了惊艳的表现。据官方消息&am…...
《算法宝典:全类型题目索引》
目录 🌴递归、搜索与回溯 一、递归 二、二叉树中的深搜 三、穷举vs暴搜vs深搜vs回溯vs剪枝 四、综合练习 五、FloodFill 算法 六、记忆化搜索 🌵优选算法 一、双指针 二、滑动窗口 三、二分查找 四、前缀和 五、位运算 六、模拟 七、分治 …...
Windows 11 部署 GPUStack 运行 DeepSeek
1. 介绍 DeepSeek 是一个强大的深度学习框架,适用于图像识别、自然语言处理等任务。GPUStack 是一个高效的 GPU 资源管理工具,能够帮助用户更好地利用 GPU 资源进行深度学习任务。本文将详细介绍如何在 Windows 11 系统上部署 GPUStack 并运行 DeepSeek…...
LangChain教程 - RAG - PDF问答
系列文章索引 LangChain教程 - 系列文章 在现代自然语言处理(NLP)中,基于文档内容的问答系统变得愈发重要,尤其是当我们需要从大量文档中提取信息时。通过结合文档检索和生成模型(如RAG,Retrieval-Augment…...
Windows 图形显示驱动开发-WDDM 3.2-自动显示切换(十二)
API 更改 ADS 功能增加了以下公共 API 功能: 枚举系统中的多路复用器设备。查询有关多路复用器的信息,例如,它连接了哪些目标,以及当前切换到哪个目标。触发多路复用器切换。如何检测多路复用器是否已切换。 枚举系统中的多路复…...
《当齐天大圣踏入3A游戏世界:黑神话·悟空的破壁传奇》:此文为AI自动生成
国产 3A 游戏的破晓之光 2024 年 8 月 20 日,这一天注定被铭记在中国游戏发展的史册上。国产首款 3A 游戏《黑神话・悟空》震撼上线,犹如一颗重磅炸弹,在全球游戏市场掀起了惊涛骇浪。仅仅上线 3 小时,其同时在线人数便突破了 140 万,一举打破 Steam 纯单机游戏最高在线纪…...
Graphics View画一个可调速的风机(pyqt)
效果如图: 风机具备调节转速的功能,转速通过扇叶旋转的快慢来区别,共分为四档,其中零档为静止状态,而一、二、三档则依次增加转速。在代码中,BlowerWrapper 类包含了可旋转的扇叶、风机外框以及选项三个主要…...
基于django图书信息管理系统的搭建(增删改查)
✍django项目搭建教程 ☞ ----------------- 教程 本文主要讲解django如何连接数据库MySQL并且可视化展示,实现增删改查功能 目录 一. 创建django应用 二. 数据库配置 三. 查看数据库 四. 编写代码 4.1视图函数 4.2 配置URL 4.3创建模板文件 4.…...
Python 编程题 第四节:斐波那契数列、列表的复制、暂停后输出、成绩评级、统计字符
斐波那契数列 方法一(递归) def f(a):if a1:return 1elif a2:return 1else:return f(a-1)f(a-2) print(f(3)) 方法二(非递归) nint(input()) lst[1,1] for i in range(2,n1):lst.append(lst[i-1]lst[i-2]) print(lst[n-1]) 列…...
【华为OD机考】华为OD笔试真题解析(15)--异常的打卡记录
题目描述 考勤记录是分析和考核职工工作时间利用情况的原始依据,也是计算职工工资的原始依据,为了正确地计算职工工资和监督工资基金使用情况,公司决定对员工的手机打卡记录进行异常排查。 如果出现以下两种情况,则认为打卡异常…...
跟我学C++中级篇——定时器的设计
一、定时器 谈到定时器,理论上讲是各种语言和各种设计都无法避开的一个技术点。对于定时器来说,表面上就是一种时间间隔的处理约定,但对程序来说,可能就是设计层面、接口层面和库或框架以及系统应用的一个大集合。不同的系统&…...
HTTP 请求时传递多部分表单数据
HTTP 请求时传递多部分表单数据(multipart/form-data) --data-raw $------demo11111\r\nContent-Disposition: form-data; name"Filedata"; filename"截屏2025-02-27 15.45.46.png"\r\nContent-Type: image/png\r\n\r\n\r\n------d…...
第J3-1周:DenseNet算法 实现乳腺癌识别
文章目录 一、前言二、前期准备1.设置GPU2.划分数据集 三、搭建网络模型1.DenseLayer模块2.DenseBlock模块3.Transition模块4.构建DenseNet5.构建densenet121 四、训练模型1.编写训练函数2.编写测试函数3.正式训练 五、结果可视化1.Loss与Accuracy图2.模型评估 总结:…...
Mac 版 本地部署deepseek ➕ RAGflow 知识库搭建流程分享(附问题解决方法)
安装: 1、首先按照此视频的流程一步一步进行安装:(macos版)ragflowdeepseek 私域知识库搭建流程分享_哔哩哔哩_bilibili 2、RAGflow 官网文档指南:https://ragflow.io 3、RAGflow 下载地址:https://github.com/infi…...
【解决】OnTriggerEnter/OnTriggerExit 调用匿名委托误区的问题
开发平台:Unity 开发语言:CSharp 6.0 开发工具:Visual Studio 2022 问题背景 public void OnTriggerEnter(Collider collider) {output.OnInteractionNoticed () > OnInteractionTriggered?.Invoke(); }public void OnTriggerExit(C…...
企业内网应用通过Taotoken实现安全可控的大模型能力调用
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 企业内网应用通过Taotoken实现安全可控的大模型能力调用 在企业内部应用开发中,引入大模型能力已成为提升效率与创新的…...
凸轮机构设计(黄老板)
1. 2. 3....
遗传算法融合线性规划:超参数调优的高效双层优化策略
1. 项目概述:当遗传算法遇上线性规划,超参数调优的新思路在机器学习项目的落地过程中,有一个环节既让人着迷又令人头疼,那就是超参数调优。模型架构的层数、神经元的数量、学习率、正则化强度……这些“旋钮”的微小转动ÿ…...
GoldenCheetah:从数据迷雾到训练洞察,3大核心功能重塑你的运动科学
GoldenCheetah:从数据迷雾到训练洞察,3大核心功能重塑你的运动科学 【免费下载链接】GoldenCheetah Performance Software for Cyclists, Runners, Triathletes and Coaches 项目地址: https://gitcode.com/gh_mirrors/go/GoldenCheetah 你是否曾…...
基于 Taotoken 构建支持多模型路由的智能写作助手 Agent
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 基于 Taotoken 构建支持多模型路由的智能写作助手 Agent 在开发智能写作工具时,一个常见的需求是让工具能够处理不同类…...
如何在5分钟内用VPKEdit一站式管理20多种游戏资源包格式?
如何在5分钟内用VPKEdit一站式管理20多种游戏资源包格式? 【免费下载链接】VPKEdit A CLI/GUI tool to create, read, and write several pack file formats. 项目地址: https://gitcode.com/gh_mirrors/vp/VPKEdit 独立游戏开发者和MOD制作者们,…...
2026年AI写作辅助网站实测精选:5款神器从选题到格式全流程护航
写论文的难处,是每个科研人和学生都心知肚明的“隐形负担”。选题无从下手,文献检索耗时费力,格式排版反复调整,查重降重更是让人抓耳挠腮。2026年的AI工具早已不再是冷冰冰的“文字机器”,而是进化成了能理解学术逻辑…...
紧急通知:2024 Q3起甲方招标强制要求提交AI辅助生成声明——ChatGPT项目计划书合规签署指南(含法律效力白皮书)
更多请点击: https://codechina.net 第一章:AI辅助生成声明的政策背景与合规必要性 近年来,全球主要经济体加速构建人工智能治理框架,AI生成内容(AIGC)的透明度与可追溯性已成为监管核心关切。欧盟《人工智…...
3小时从零掌握:通达信缠论量化插件终极实战指南 [特殊字符]
3小时从零掌握:通达信缠论量化插件终极实战指南 🚀 【免费下载链接】Indicator 通达信缠论可视化分析插件 项目地址: https://gitcode.com/gh_mirrors/ind/Indicator 通达信缠论量化插件是一款革命性的技术分析工具,专为股票投资者打造…...
独立开发者如何借助Taotoken低成本试验多种AI模型
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 独立开发者如何借助Taotoken低成本试验多种AI模型 对于资源有限的独立开发者而言,构建AI应用原型时面临两个核心挑战&a…...
