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

Opencv 学习笔记:腐蚀操作 + 轮廓标记 + 分水岭分割

腐蚀是形态学操作的核心,常与轮廓分析、分水岭算法结合实现图像分割。本文整合「腐蚀去噪→轮廓标记→分水岭分割」全流程,演示从预处理到最终分割的完整逻辑,新手可直接复用。

核心代码实现

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, i+5, 1) # 标记值=i+5,线宽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()为每个轮廓分配唯一数值标记(i+5),生成分水岭标记图
分水岭分割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)先膨胀后腐蚀,填充前景孔洞

总结

  1. 腐蚀操作是分水岭分割的关键预处理,核心作用是去除小噪点、强化前景轮廓,核尺寸需适配噪点大小;
  2. 分水岭算法的核心是「标记图」:轮廓标记值需避开 0/1,避免与背景 / 未知区域冲突;
  3. 数据类型严格匹配(轮廓检测→uint8,分水岭标记图→float32)是流程运行的基础。
http://www.jsqmd.com/news/410972/

相关文章:

  • paperzz:重塑本科毕业论文体验,让学术创作告别焦虑与低效
  • 畅享旅游新境界:Java系统全程护航
  • 2026年性价比高的纳米涂层厂家推荐,华升纳米反馈与产品稳定性揭秘 - 工业品网
  • Java同城理发预约:一键畅享便捷服务
  • 解析Kotlin中元组的多返回值实现
  • 四旋翼无人机的滑模控制仿真设计
  • Java赋能畅享旅游:智能规划新体验
  • Java拼班系统:体育课程一键灵活拼订
  • UE5 C++(72):文件与文件夹的删除
  • 探讨电线电缆优质生产商,重庆昂翡线缆服务及价格如何 - 工业品牌热点
  • Java助力理发预约:同城美发轻松搞定
  • 2026生物医药与电子半导体厂房暖通中央空调工程优质公司推荐_ - 品牌2025
  • 去种子展会怎么坐车,2026年种子展会发展趋势及靠谱展会盘点 - mypinpai
  • 逻辑风险前置化:IACheck以AI审核强化生产制造银行流水审核体系
  • 2026 年新纪元:GEO 优化服务重塑产品竞争力的全面攻略,GEO服务/GEO优化AI工具排名,GEO优化公司哪个好 - 品牌推荐师
  • 2026年上海开公司代办营业执照及财务代理机构推荐 - 财税记事本
  • 2026最新云南情侣蜜月游机构TOP9推荐:靠谱旅行社权威榜单发布 - 十大品牌榜
  • 直接上结论:8个降AI率软件降AIGC网站评测,研究生必看的降AI率工具推荐
  • 2026生物医药与电子半导体洁净室无尘室工程企业汇总 - 品牌2025
  • 盘点2026年口碑佳的港澳留学一站式服务机构,快来了解 - 工业品网
  • 深聊信联易达移民,专业水平、项目覆盖及口碑情况盘点 - 工业设备
  • 毕业论文神器!继续教育降AI率首选 —— 千笔·降AIGC助手
  • 2026年全国可靠的专升本学校排名,株洲科技职业学院位列其中 - 工业品牌热点
  • 一篇搞定全流程,AI论文软件 千笔·专业学术智能体 VS 灵感风暴AI
  • 剖析交互白板教学一体机,2026年值得关注的厂家排名 - myqiye
  • 本科生收藏!千笔ai写作,碾压级的AI论文工具
  • 2026年口碑好的专利代理企业排名,广州服务不错售后完善的专业公司盘点 - mypinpai
  • 实测数据说话:被动式窗的节能效果究竟怎样?被动式窗/旧窗换新/整体门窗/复古门窗/隔音门窗,被动式窗厂家找哪家 - 品牌推荐师
  • 硕士论文 “轻舟” 计划:Paperzz 如何用智能辅助重构你的学术写作效率
  • 科杰技术靠谱不,细聊创新成果、专业度与发展潜力 - myqiye