Opencv 学习笔记:腐蚀操作 + 轮廓标记 + 分水岭分割 📅 发布时间:2026/7/11 11:43:34 👁️ 浏览次数: 腐蚀是形态学操作的核心常与轮廓分析、分水岭算法结合实现图像分割。本文整合「腐蚀去噪→轮廓标记→分水岭分割」全流程演示从预处理到最终分割的完整逻辑新手可直接复用。核心代码实现import cv2 as cv import numpy as np # 1. 读取图像并初始化补充完整流程 src cv.imread(./image/test.bmp) # 替换为你的图像路径 if src is None: print(图像读取失败请检查路径) exit() srcss src.copy() # 分水岭分割画布 result4 src.copy() # 腐蚀输入图像需为单通道二值图此处补充预处理 # 预处理转为灰度图→二值化腐蚀操作的前提 gray cv.cvtColor(result4, cv.COLOR_BGR2GRAY) ret, result4 cv.threshold(gray, 127, 255, cv.THRESH_BINARY) # 2. 腐蚀操作核心去除小噪点强化前景轮廓 # 创建结构化元素9×9矩形核尺寸越大腐蚀越强 kernel cv.getStructuringElement(cv.MORPH_RECT, (9, 9)) result5 cv.erode(result4, kernel) # 执行腐蚀 # 3. 轮廓检测基于腐蚀后的图像 result6 np.uint8(result5) # 确保为uint8格式轮廓检测要求 contours, hierarchy cv.findContours(result6, cv.RETR_CCOMP, cv.CHAIN_APPROX_SIMPLE) # 4. 轮廓标记为分水岭算法生成标记图 # 初始化标记图float32类型尺寸与原图一致 result7 np.zeros((src.shape[0], src.shape[1]), np.float32) # 遍历轮廓为每个轮廓分配唯一标记值从5开始避免与背景冲突 for i, contour in enumerate(contours): cv.drawContours(result7, contours, i, i5, 1) # 标记值i5线宽1 # 5. 执行分水岭分割 cv.watershed(srcss, result7) # 标注分割边界标记值为-1的区域是分割线 srcss[result7 -1] [0, 0, 255] # 分割线标红 # 6. 显示结果 cv.namedWindow(腐蚀结果, cv.WINDOW_NORMAL) cv.resizeWindow(腐蚀结果, 600, 600) cv.imshow(腐蚀结果, result5) cv.namedWindow(轮廓标记图, cv.WINDOW_NORMAL) cv.resizeWindow(轮廓标记图, 600, 600) cv.imshow(轮廓标记图, result7 / result7.max() * 255) # 归一化显示 cv.namedWindow(分水岭分割结果, cv.WINDOW_NORMAL) cv.resizeWindow(分水岭分割结果, 600, 600) cv.imshow(分水岭分割结果, srcss) cv.waitKeyEx(0) cv.destroyAllWindows()关键知识点解析1. 核心流程拆解步骤核心 API作用说明腐蚀操作cv.erode()用 9×9 矩形核腐蚀图像消除小噪点让前景轮廓更清晰轮廓检测cv.findContours()提取腐蚀后图像的轮廓为分水岭提供前景标记轮廓标记cv.drawContours()为每个轮廓分配唯一数值标记i5生成分水岭标记图分水岭分割cv.watershed()基于标记图分割图像result7 -1为分割边界2. 核心参数与避坑点腐蚀核参数cv.getStructuringElement(cv.MORPH_RECT, (9,9))矩形核尺寸越大腐蚀效果越强需根据图像噪点大小调整小噪点用 3×3大噪点用 9×9轮廓标记值标记值从 5 开始而非 0/1避免与分水岭算法的「背景0」「未知区域1」冲突是分割成功的关键数据类型要求轮廓检测输入必须为uint8类型因此需result6 np.uint8(result5)分水岭标记图必须为float32类型因此初始化result7时指定np.float32分割边界标注watershed执行后标记图中值为-1的像素是分割边界用红色标注可直观验证分割效果。3. 形态学操作扩展操作API作用膨胀cv.dilate()与腐蚀相反扩大前景区域修复轮廓断裂开运算cv.morphologyEx(src, cv.MORPH_OPEN, kernel)先腐蚀后膨胀去除小噪点且不改变前景大小闭运算cv.morphologyEx(src, cv.MORPH_CLOSE, kernel)先膨胀后腐蚀填充前景孔洞总结腐蚀操作是分水岭分割的关键预处理核心作用是去除小噪点、强化前景轮廓核尺寸需适配噪点大小分水岭算法的核心是「标记图」轮廓标记值需避开 0/1避免与背景 / 未知区域冲突数据类型严格匹配轮廓检测→uint8分水岭标记图→float32是流程运行的基础。
Java拼班系统:体育课程一键灵活拼订 Java拼班系统通过整合高并发处理、智能匹配算法、实时通信等核心技术,结合体育课程场景的特殊需求(如场地协调、教练排班、学员水平适配等),为用户提供“一键灵活拼订”的便捷体验,同时帮助机构提升课程利用率与运营效… 2026/7/11 11:43:33
paperzz:重塑本科毕业论文体验,让学术创作告别焦虑与低效 Paperzz-AI官网免费论文查重复率AIGC检测/开题报告/文献综述/论文初稿paperzz - 毕业论文-AIGC论文检测-AI智能降重-ai智能写作https://www.paperzz.cc/dissertation 在本科学习的最后一公里,毕业论文像一座横亘在毕业前的大山。选题时的迷茫、文献搜集的繁琐、大纲… 2026/7/10 9:12:51
Paperzz本科毕业论文写作功能全解析:AI智能辅助,让毕业季不再焦虑 Paperzz-AI官网免费论文查重复率AIGC检测/开题报告/文献综述/论文初稿paperzz - 毕业论文-AIGC论文检测-AI智能降重-ai智能写作https://www.paperzz.cc/dissertation 引言:毕业季论文写作痛点大揭秘 每年毕业季,数百万本科生都要面对同一个挑战——毕业… 2026/7/7 1:24:17
永续合约多空双开策略 v1.0 实盘部署:基于CCXT的3步自动化交易系统 永续合约多空双开策略 v1.0 实盘部署:基于CCXT的3步自动化交易系统在数字货币交易领域,永续合约因其无到期日、资金费率机制等特点,成为量化交易者的重要战场。多空双开策略通过同时持有相反方向的仓位,能够在市场波动中捕捉双向机… 2026/7/11 11:38:59
3分钟高效解决微信QQ消息撤回问题:终极防撤回补丁完整指南 3分钟高效解决微信QQ消息撤回问题:终极防撤回补丁完整指南 【免费下载链接】RevokeMsgPatcher :trollface: A hex editor for WeChat/QQ/TIM - PC版微信/QQ/TIM防撤回补丁(我已经看到了,撤回也没用了) 项目地址: https://gitcod… 2026/7/11 11:38:59
前端小白也能掌握!30天实战AI开发,收藏这系列就够了! 本文针对前端开发者想转AI开发的情况,详细阐述了转行的必要性、学习路径及具体实践方法。文章指出AI前端开发是当前趋势,机会多且薪资高,适合前端转向。提出了从会用AI工具提效,到独立开发AI应用,再到全栈AI开发的三个… 2026/7/11 11:34:58
C++项目AI评估:五大核心指标构建代码稳定性智能防线 1. 项目概述:当C项目遇上AI评估如果你是一名C开发者,或者正在管理一个中大型的C项目,那么“项目崩溃”这四个字,大概率是你职业生涯中挥之不去的噩梦。内存泄漏、野指针、多线程数据竞争、未定义行为……这些经典难题,… 2026/7/11 11:30:57
魔兽争霸III终极优化指南:如何用WarcraftHelper插件让你的经典游戏焕然一新 魔兽争霸III终极优化指南:如何用WarcraftHelper插件让你的经典游戏焕然一新 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还在为魔兽争霸… 2026/7/11 11:28:56
AI时代编辑器生死线:VS Code扩展生态 vs Cursor原生AI架构——从LSP协议层到Copilot++引擎的底层架构解剖(附源码级对比图) 更多请点击: https://codechina.net 第一章:AI时代编辑器生死线:VS Code扩展生态 vs Cursor原生AI架构——从LSP协议层到Copilot引擎的底层架构解剖(附源码级对比图) 现代智能编辑器的核心分野已不再局限于UI或插件数… 2026/7/11 11:26:56
5分钟搞定Kodi字幕难题:智能字幕插件让你追剧无忧 [特殊字符] 5分钟搞定Kodi字幕难题:智能字幕插件让你追剧无忧 🎬 【免费下载链接】zimuku_for_kodi Kodi 插件,用于从「字幕库」网站下载字幕 项目地址: https://gitcode.com/gh_mirrors/zi/zimuku_for_kodi 还记得那个深夜吗?你刚下载… 2026/7/11 0:00:11
工业信号干扰处理与FOD4216光耦应用实战 1. 工业环境中的信号干扰挑战在工业自动化领域,信号采集的准确性直接关系到整个控制系统的可靠性。典型的工业现场充斥着各种干扰源:大功率电机启停产生的电磁干扰、变频器工作产生的高频噪声、继电器触点火花放电,以及长距离传输引入的共模干… 2026/7/11 0:00:11
OpenHarmony 完整项目工程整合规范 + 模块化分层架构(API23+ 标准企业级结构) 摘要前面系列教程覆盖了 ArkUI 组件、路由、生命周期、本地存储、网络请求、Ability 底层全套基础能力,本篇统一梳理标准工程目录分层、模块化拆分、代码复用规范、全局工具统一管理、项目打包权限配置、常见工程报错统一解决方案,形成可直接用于课程设计… 2026/7/11 0:00:11
6个月转型AI工程师:实战路径与核心技能 1. 项目概述:6个月转型AI工程师的可行性路径在2023年大模型技术爆发的背景下,AI工程师岗位需求同比增长217%(LinkedIn数据)。不同于传统算法工程师需要3-5年培养周期,现代AI工程师更侧重工程化落地能力。我在硅谷科技公… 2026/7/7 11:26:57
TPAFE0808与PIC18F87K22的多通道信号采集方案 1. 项目背景与核心需求在工业自动化、医疗设备和科研仪器等领域,多通道信号采集与系统监测是基础且关键的技术需求。传统方案往往面临通道数量不足、信号调理复杂、系统集成度低等问题。TPAFE0808作为一款8通道模拟前端芯片,与PIC18F87K22微控制器的组合… 2026/7/8 20:15:17
STC3115与PIC18LF26K80构建高精度电池管理系统 1. STC3115与PIC18LF26K80在电池管理系统中的核心价值在现代电子设备中,电池管理系统(BMS)的重要性不亚于设备的核心处理器。STC3115作为一款高精度电池电量监测IC,与PIC18LF26K80微控制器的组合,构成了一个既能精确监控又能智能管理的完整解… 2026/7/8 14:25:08