C++ Opencv imfill 孔洞填充函数的实现(更新后)
目录
- 一、须知
- 二、演示过程
- 代码展示
- 主函数展示
- 原图
- 运行结果
- 三、总结
一、须知
本文章所提供代码不是自创,由于时间太久实在找不到来源,发布出来只为给大家提供便利,完全免费。
话不多说,不想看文章的直接点击下载链接即可:
点我.
二、演示过程
代码展示
Mat cop
二值图
int n
填充比n
小的孔洞
函数默认为4连通 如想改为8连通 自行修改代码即可。
#include"imfill.h"Mat imfill(Mat cop,int n)
{Mat data = ~cop;Mat labels, stats, centroids;connectedComponentsWithStats(data, labels, stats, centroids, 4, CV_16U);int regions_count = stats.rows - 1;int regions_size, regions_x1, regions_y1, regions_x2, regions_y2;for (int i = 1; i <= regions_count; i++){regions_size = stats.ptr<int>(i)[4];if (regions_size < n){regions_x1 = stats.ptr<int>(i)[0];regions_y1 = stats.ptr<int>(i)[1];regions_x2 = regions_x1 + stats.ptr<int>(i)[2];regions_y2 = regions_y1 + stats.ptr<int>(i)[3];for (int j = regions_y1; j < regions_y2; j++){for (int k = regions_x1; k < regions_x2; k++){if (labels.ptr<ushort>(j)[k] == i)data.ptr<uchar>(j)[k] = 0;}}}}data = ~data;return data;
}
主函数展示
#include<opencv2/opencv.hpp>
#include<iostream>using namespace std;
using namespace cv;#include"imfill.h"Mat src,dst, gray, erzhi,holef;int main()
{src = imread("5.jpg");//imshow("万丈高楼第一步",src);blur(src, dst, Size(3, 3), Point(-1, -1));//imshow("均值滤波",dst);cvtColor(dst, gray, COLOR_BGR2GRAY);//imshow("灰度图",gray);Canny(gray, erzhi, 100, 200, 3, false);//imshow("边缘检测",erzhi);holef = imfill(erzhi,1000);imshow("填洞", holef);waitKey(0);return 0;
}
原图
运行结果
三、总结
新代码的运行速度较之前发布的相同功能的孔洞填充函数运行速度更快,实践证明大牛无处不在,小白瑟瑟发抖。
C++ Opencv imfill 孔洞填充函数的实现(更新后)相关推荐
- C++ Opencv imfill 孔洞填充函数的实现(学习笔记)
C++ Opencv imfill 孔洞填充函数的实现 敬告 函数实现的中心思想 二值图 寻找连通域的关键 种子点的确定 连通域的寻找过程 条件设定 最后赋值 话不多说 直接上函数代码 主函数代码 代 ...
- opencv 实现孔洞填充的两个解决方案 MATLAB--imfill功能(收集)
opencv 孔洞填充,方案1: http://bbs.csdn.net/topics/391542633?page=1 opencv 孔洞填充,方案1: 其实主要是imfill(matrix, 'h ...
- matlab 实现二值图像孔洞填充函数imfill()
代码如下: function [I2,locations] = imfill(varargin)[I,locations,conn,do_fillholes] = parse_inputs(varar ...
- matlab imfill孔洞填充
BW2 = imfill(BW) 作用填充二值图像BW中的空洞 clear all; clc; close all; img = imread('test1.png'); if ndims(img)= ...
- python颜色填充函数_【图像后处理】python+OpenCV填充孔洞
我们在进行图像分割后,分割结果有时会有一些小孔洞,如图1所示,其中黑白两色表示两种不同的类别.一般情况下,这些孔洞属于错分情况,为了优化结果,我们通常对这些孔洞进行填充.今天我们就用python语言基 ...
- opencv漫水填充算法
1.定义 使用特定的颜色填充连通区域,通过设置可连通像素的上下限以及连通方式达到不同的填充效果. 2.opencv漫水填充函数 int floodFill(InputOutputArray image ...
- python_opencv实现图像分割(多分类彩色图像)孔洞填充后处理
我们在进行图像分割后,分割图像结果有时会有一些小孔洞,如下图所示.今天我们就用python语言基于OpenCV实现孔洞填充. 代码实现: import cv2; import numpy as np; ...
- OpenCV函数应用:基于二值图像的三种孔洞填充方法记录(附python,C++代码)
系列文章目录 函数系列: OpenCV函数简记_第一章数字图像的基本概念(邻域,连通,色彩空间) OpenCV函数简记_第二章数字图像的基本操作(图像读写,图像像素获取,图像ROI获取,图像混合,图形 ...
- Python-基于OpenCV的轮廓填充 泛洪算法 孔洞填充
左为原图 右为填充后 针对轮廓填充,我们先要提取图像中的轮廓,在对里面的进行颜色填充,这个我自己也有点分不清楚,他和阈值分割进行填充有什么区别,要是有大佬知道,分享一下,将感激不尽!轮廓填充的方法常用 ...
最新文章
- 厉害了,为了干掉 HTTP ,Spring团队又开源 nohttp 项目!
- 在asp.net中读取XML文件信息的4种方法
- convex function
- 新电脑怎么分盘_2020双十一预算一万该怎么组装电脑(含显示器)新媒体,视频剪辑等影视专业装机指南...
- jmeter之-用Firefox录制https协议证书问题
- mysql 从服务器同步设置_mysql主从同步配置
- python动态页面元素爬取_爬取动态网页python+Web kit
- 支付宝接口调试经验总结
- 字符串的数组形式与指针形式
- VirtualBox安装RedHat7
- 欧姆龙PLC程序 欧姆龙NX系列PLC程序,ST语言和梯形图配合使用,数据处理使用ST语言,逻辑用梯形图
- 学会这120个PS小技巧,工作效率提高5倍!
- 【C语言编程练习】华氏转换为摄氏
- scrapy框架爬虫
- 科视Christie 亮相上海国际电影论坛暨展览会 彰显 PLF 放映和 RGB 纯激光技术领域的领导地位
- win7恢复计算机图标不见了怎么办,win7桌面图标找不到的五种恢复方法
- 如何拆宏碁(acer)笔记本--个人动手更换风扇、清理灰尘
- 我有一个方法判断你有没有编程天赋
- (邱维声)高等代数课程笔记:数域
- idea右侧没有maven,main方法无启动图标解决方法