点击上方“OpenCV与AI深度学习”,选择加"星标"或“置顶

重磅干货,第一时间送达

导读

本文主要介绍使用OpenCV对二值图做孔洞填充的方法与实现。

背景介绍

为什么要做孔洞填充?因为在部分情况下,二值图内部的孔洞和外部轮廓是一个整体,填充孔洞可以方便后续处理,减少干扰。

OpenCV孔洞填充的常用方法有2种:

① 形态学闭运算。闭运算是先膨胀后腐蚀操作,如上图,先膨胀白色高亮区域增加,孔洞会被填充。但使用闭运算针对不同的图片不能准确知道需要的核大小是多少,所以并不能通用;

② 轮廓绘制方法。通过轮廓绘制drawContours函数设置绘制线宽为-1即可填充绘制。但查找轮廓一般是在二值图处理之后才会使用,这样会造成重复操作。

尽量在二值图时完成孔洞填充,不影响后续操作顺序才是最终目标!

实现步骤与代码

实现步骤:

① 通过二值化或其他方法得到二值图;

② 使用floodFill从(0,0)点开始执行漫水填充算法;

③ 漫水填充结果图取反;

④ 取反后的结果与二值图求并集。

实现代码与逐步演示:

OpenCV技巧 | 二值图孔洞填充方法与实现(附Python/C++源码)相关推荐

  1. OpenCV函数应用:基于二值图像的三种孔洞填充方法记录(附python,C++代码)

    系列文章目录 函数系列: OpenCV函数简记_第一章数字图像的基本概念(邻域,连通,色彩空间) OpenCV函数简记_第二章数字图像的基本操作(图像读写,图像像素获取,图像ROI获取,图像混合,图形 ...

  2. OpenCV(实战)二值图颜色填充(彩色图形、硬币)

    目录 一.彩色图形填充 1.初始效果展示 2.试错过程: 1.试错1:锐化显示所有图片 2.试错2:用礼帽提取出明亮部分 3.正确方式:直接对图片亮度增强(不用形态学处理) 总代码 二.硬币填充 1. ...

  3. OpenCV图像无缝融合-seamlessClone介绍与使用(附Python/C++源码)

    导读 本期将介绍并演示OpenCV使用seamlessClone实现图像无缝融合效果. 介绍 seamlessClone是OpenCV3后添加的函数,使用此函数可以轻松将一幅图像中的指定目标复制后粘贴 ...

  4. OpenCV技巧 | 常用格式图片保存为透明背景图片(附Python源码)-教你轻松制作Logo

    导读 本文主要介绍使用OpenCV将常用格式图片保存为透明背景图片的方法与实现代码. 实现目标 本文的目标有如下两个: ① 将常见格式[jpg/png/bmp]白色背景图片转换保存为透明背景图片: ② ...

  5. 实战 | OpenCV如何将不同轮廓合并成一个轮廓(附Python / C++源码)

    点击下方卡片,关注"OpenCV与AI深度学习"公众号! 视觉/图像重磅干货,第一时间送达! 导读 本文主要介绍如何用OpenCV将不同的轮廓合并成一个轮廓的实现方法和代码演示. ...

  6. 基于OpenCV DNN模块给黑白老照片上色(附Python/C++源码)

    点击下方卡片,关注"OpenCV与AI深度学习"公众号! 导读 本文给大家分享一个用OpenCV DNN模块给黑白老照片上色的实例,并给出Python和C++版本源码. 背景介绍 ...

  7. Python 技术篇-pip安装的python库缓存位置查看方法,如何查看python库源码

    用 pip install xxx 安装库时,pip 把库缓存在了:C:\Users\Administrator\AppData\Local\pip\cache, 我的用户是管理员,所以是 Admin ...

  8. python3 opencv 基于二值化图像素投影的图片切割方法

    对于一些背景纯色,结构相对简单的图,可以利用传统的opencv图像处理进行分割.先来记录一下基于二值化图像素投影的图片切割方法的实现.比如下面这张图,可以利用这个算法进行切割.(源代码在最后面) 切割 ...

  9. 利用OpenCV和C++实现由RGB图像转化为灰度图,再将灰度图转化为二值图的程序

    #include<opencv2\opencv.hpp> #include<opencv2/imgproc/imgproc.hpp> #include<opencv2\i ...

最新文章

  1. 《图解HTTP》笔记之TCP/IP
  2. 【Android 逆向】修改运行中的 Android 进程的内存数据 ( Android 命令行中获取要调试的应用进程的 PID | 进程注入调试进程内存的 so 库 )
  3. 用Tableau画Arc Bar Chart
  4. 微服务架构师的职责——《微服务设计读书笔记》
  5. 数据结构之排序算法:基数排序
  6. Python高级——import导入模块
  7. Shiro 整合SpringMVC 并实现权限管理,登录和注销
  8. GeoQuiz初体验
  9. 在VC++ 6.0下利用共享内存、消息实现内部进程通讯
  10. ghost mysql_Ghost - 博客搭建
  11. java 如何执行dig 命令_dig命令简介
  12. C++自编图书借阅系统
  13. 东芝打印机共享怎么设置_东芝 e-studio181怎么设置网络打印机
  14. 电脑录屏软件哪个好用,分享4款电脑录制视频清晰软件
  15. 如何推广自己的新网站
  16. 【Unity】用Lerp()实现类杀戮尖塔手牌变化
  17. zigbee加PA信号增强方案:rfx2401+cc2530
  18. 简介DefaultView
  19. Java关于对象的相等判断问题(equals)
  20. Android 翻页效果 电子书 (转)

热门文章

  1. 图书馆座位预约系统,图书馆座位管理系统,图书馆座位预约毕业设计
  2. 木星 2019/6/29/22:31
  3. ACCESS表达式中的叹号“!”和点号“.”的区别
  4. 抖音视频解析PHP源码抖音解析php版api
  5. 虫师 Selenium3 基于Python 生成HTML测试报告误区记录
  6. \xe4\xb8\xad\xe6\x96\x87 phython 字符编码乱码问题
  7. 移动开发——音乐小程序服务器搭建
  8. 1.移动机器人发展现状
  9. c语言中如何输入log函数,在C语言中使用对数函数的方法
  10. 苹果电脑win10蓝牙音响卡顿_win10蓝牙音响音质不清怎么解决