OpenCV技巧 | 二值图孔洞填充方法与实现(附Python/C++源码)
点击上方“OpenCV与AI深度学习”,选择加"星标"或“置顶”
重磅干货,第一时间送达
导读
本文主要介绍使用OpenCV对二值图做孔洞填充的方法与实现。
背景介绍
为什么要做孔洞填充?因为在部分情况下,二值图内部的孔洞和外部轮廓是一个整体,填充孔洞可以方便后续处理,减少干扰。
OpenCV孔洞填充的常用方法有2种:
① 形态学闭运算。闭运算是先膨胀后腐蚀操作,如上图,先膨胀白色高亮区域增加,孔洞会被填充。但使用闭运算针对不同的图片不能准确知道需要的核大小是多少,所以并不能通用;
② 轮廓绘制方法。通过轮廓绘制drawContours函数设置绘制线宽为-1即可填充绘制。但查找轮廓一般是在二值图处理之后才会使用,这样会造成重复操作。
尽量在二值图时完成孔洞填充,不影响后续操作顺序才是最终目标!
实现步骤与代码
实现步骤:
① 通过二值化或其他方法得到二值图;
② 使用floodFill从(0,0)点开始执行漫水填充算法;
③ 漫水填充结果图取反;
④ 取反后的结果与二值图求并集。
实现代码与逐步演示:
OpenCV技巧 | 二值图孔洞填充方法与实现(附Python/C++源码)相关推荐
- OpenCV函数应用:基于二值图像的三种孔洞填充方法记录(附python,C++代码)
系列文章目录 函数系列: OpenCV函数简记_第一章数字图像的基本概念(邻域,连通,色彩空间) OpenCV函数简记_第二章数字图像的基本操作(图像读写,图像像素获取,图像ROI获取,图像混合,图形 ...
- OpenCV(实战)二值图颜色填充(彩色图形、硬币)
目录 一.彩色图形填充 1.初始效果展示 2.试错过程: 1.试错1:锐化显示所有图片 2.试错2:用礼帽提取出明亮部分 3.正确方式:直接对图片亮度增强(不用形态学处理) 总代码 二.硬币填充 1. ...
- OpenCV图像无缝融合-seamlessClone介绍与使用(附Python/C++源码)
导读 本期将介绍并演示OpenCV使用seamlessClone实现图像无缝融合效果. 介绍 seamlessClone是OpenCV3后添加的函数,使用此函数可以轻松将一幅图像中的指定目标复制后粘贴 ...
- OpenCV技巧 | 常用格式图片保存为透明背景图片(附Python源码)-教你轻松制作Logo
导读 本文主要介绍使用OpenCV将常用格式图片保存为透明背景图片的方法与实现代码. 实现目标 本文的目标有如下两个: ① 将常见格式[jpg/png/bmp]白色背景图片转换保存为透明背景图片: ② ...
- 实战 | OpenCV如何将不同轮廓合并成一个轮廓(附Python / C++源码)
点击下方卡片,关注"OpenCV与AI深度学习"公众号! 视觉/图像重磅干货,第一时间送达! 导读 本文主要介绍如何用OpenCV将不同的轮廓合并成一个轮廓的实现方法和代码演示. ...
- 基于OpenCV DNN模块给黑白老照片上色(附Python/C++源码)
点击下方卡片,关注"OpenCV与AI深度学习"公众号! 导读 本文给大家分享一个用OpenCV DNN模块给黑白老照片上色的实例,并给出Python和C++版本源码. 背景介绍 ...
- Python 技术篇-pip安装的python库缓存位置查看方法,如何查看python库源码
用 pip install xxx 安装库时,pip 把库缓存在了:C:\Users\Administrator\AppData\Local\pip\cache, 我的用户是管理员,所以是 Admin ...
- python3 opencv 基于二值化图像素投影的图片切割方法
对于一些背景纯色,结构相对简单的图,可以利用传统的opencv图像处理进行分割.先来记录一下基于二值化图像素投影的图片切割方法的实现.比如下面这张图,可以利用这个算法进行切割.(源代码在最后面) 切割 ...
- 利用OpenCV和C++实现由RGB图像转化为灰度图,再将灰度图转化为二值图的程序
#include<opencv2\opencv.hpp> #include<opencv2/imgproc/imgproc.hpp> #include<opencv2\i ...
最新文章
- 《图解HTTP》笔记之TCP/IP
- 【Android 逆向】修改运行中的 Android 进程的内存数据 ( Android 命令行中获取要调试的应用进程的 PID | 进程注入调试进程内存的 so 库 )
- 用Tableau画Arc Bar Chart
- 微服务架构师的职责——《微服务设计读书笔记》
- 数据结构之排序算法:基数排序
- Python高级——import导入模块
- Shiro 整合SpringMVC 并实现权限管理,登录和注销
- GeoQuiz初体验
- 在VC++ 6.0下利用共享内存、消息实现内部进程通讯
- ghost mysql_Ghost - 博客搭建
- java 如何执行dig 命令_dig命令简介
- C++自编图书借阅系统
- 东芝打印机共享怎么设置_东芝 e-studio181怎么设置网络打印机
- 电脑录屏软件哪个好用,分享4款电脑录制视频清晰软件
- 如何推广自己的新网站
- 【Unity】用Lerp()实现类杀戮尖塔手牌变化
- zigbee加PA信号增强方案:rfx2401+cc2530
- 简介DefaultView
- Java关于对象的相等判断问题(equals)
- Android 翻页效果 电子书 (转)
热门文章
- 图书馆座位预约系统,图书馆座位管理系统,图书馆座位预约毕业设计
- 木星 2019/6/29/22:31
- ACCESS表达式中的叹号“!”和点号“.”的区别
- 抖音视频解析PHP源码抖音解析php版api
- 虫师 Selenium3 基于Python 生成HTML测试报告误区记录
- \xe4\xb8\xad\xe6\x96\x87 phython 字符编码乱码问题
- 移动开发——音乐小程序服务器搭建
- 1.移动机器人发展现状
- c语言中如何输入log函数,在C语言中使用对数函数的方法
- 苹果电脑win10蓝牙音响卡顿_win10蓝牙音响音质不清怎么解决