opencv 二值图像的孔洞填充
2016-07-20 14:19
369 查看
有的时候,我们需要对图像进行孔洞填充,一般想到的方法都是,使用findcontours函数,查找最外层轮廓,然后画出找到的轮廓。
这确实是一种方法,但似乎不够高效。下面贴出一个函数,可以更好的实现这个功能。
话不多说,上代码。开发环境 opencv2.4.13+vs2013 其他vs或者opencv版本应该也可以跑出来
当你仔细看看这几行代码,就会知道,原理很简单了吧。。
运行效果如图所示
这确实是一种方法,但似乎不够高效。下面贴出一个函数,可以更好的实现这个功能。
话不多说,上代码。开发环境 opencv2.4.13+vs2013 其他vs或者opencv版本应该也可以跑出来
void chao_fillHole(const cv::Mat srcimage, cv::Mat &dstimage) { Size m_Size = srcimage.size(); Mat temimage = Mat::zeros(m_Size.height + 2, m_Size.width + 2, srcimage.type());//延展图像 srcimage.copyTo(temimage(Range(1, m_Size.height + 1), Range(1, m_Size.width + 1))); floodFill(temimage, Point(0, 0), Scalar(255)); Mat cutImg;//裁剪延展的图像 temimage(Range(1, m_Size.height + 1), Range(1, m_Size.width + 1)).copyTo(cutImg); dstimage = srcimage | (~cutImg); }
当你仔细看看这几行代码,就会知道,原理很简单了吧。。
运行效果如图所示
相关文章推荐
- LINUX 使用tcgetattr与tcsetattr函数控制终端
- Tomcat中catalina.bat详解
- shell的一些符号
- 守护进程 & 创建守护进程 & fork一次和fork两次的区别
- linux下杀死进程(kill)的N种方法
- Android 框架搭建 软件架构 设计模式与系统架构
- 用户home目录中的.bashrc的用法
- mac下tomcat的安装和配置(转载)
- OpneCV 二值图像区域处理
- [Funkunux] Linux_2.6.22.6 内核start_kernel函数分析之console_init
- 在centos6.5中安装 GitLab 全过程和问题记录
- Hadoop的MR程序中map的个数
- BusyBox 简化嵌入式 Linux 系统【转】
- nginx配置
- tar.gz tar bz2 zip
- Linux设备模型(热插拔、mdev 与 firmware)【转】
- 在yum 安装(docker方式安装)的redis 配置认证密码 和 限定IP登录
- LINUX_端口加到防火墙
- Docker入门-镜像、容器、仓库简单命令
- linux根文件系统制作之busybox编译和系统构建【转】