opencv形态学应用之区域填充
来源:互联网 发布:ubuntu 设置密码 编辑:程序博客网 时间:2024/05/24 07:20
在进行形态学填充之前必须了解一点:当我们的边界是4连通边界时,我们使用的结构元素为8连通;当我们的连通边界为8连通时,我们需要用4连通的结构元素。
算法:
初始化:Bo=种子点(这里采用opencv鼠标操作来手动选取种子点)
循环:
(用3X3十字结构元素对对种子点进行膨胀,然后不断的用图像的补集对膨胀的结果进行约束)
结束条件:膨胀结果不发生变化
#include<opencv2\opencv.hpp>#include<iostream>using namespace std;using namespace cv;Point ptStart;/***************************************************功能:以ptStart为起点对图像进行填充参数:src-边界图像 ptStart-种子点的坐标****************************************************/void BoundarySeedFill(Mat &src, Point ptStart){Mat dst = Mat::zeros(src.size(), src.type());int se[3][3] = { { -1, 1, -1 }, { 1, 1, 1 }, { -1, 1, -1 } };//十字形结构元素Mat tempImg = Mat::ones(src.size(), src.type())*255;Mat revImg =tempImg - src;//原图像的补集dst.at<uchar>(ptStart.y, ptStart.x) = 255;//绘制种子点while (true)//循环膨胀图像直到图像不在产生变化{Mat temp;dst.copyTo(temp);dilate(dst, dst, se); //用十字结构元素膨胀dst = dst&revImg; //限制膨胀不会超过原始边界if (equalImg(dst, temp)) //不在变化时停止{break;}}src = dst;}void on_MouseHandle(int event, int x, int y, int flag, void* param){Mat& image = *(cv::Mat*)param;switch (event){case EVENT_LBUTTONDOWN:ptStart.x = x;ptStart.y = y;break;case EVENT_LBUTTONUP:BoundarySeedFill(image, ptStart);imshow("边界图像", image);break;}}int main(){//读取二值图像(此步可以忽略)Mat src = imread("test1.jpg", 0);imshow("原始图像", src);//创建模板int se[3][3] = { { -1, 1, -1 }, { 1, 1, 1 }, { 1, 1, 1 } };//区域填充setMouseCallback("边界图像", on_MouseHandle, (void*)&src);waitKey(0);return 0;}
原始图像:
填充结果:
阅读全文
0 0
- opencv形态学应用之区域填充
- OpenCV图像处理-区域分割-形态学操作应用
- opencv形态学应用之连通域提取
- 一些基本形态学算法------区域填充算法
- OpenCV—漫水填充floodFill之区域信息统计
- OPENCV之形态学处理
- opencv之形态学操作
- opencv之形态学重建
- opencv形态学应用之边界提取与跟踪
- OpenCV之图像形态学运算
- OpenCV学习之形态学操作
- OpenCV学习之形态学操作
- OpenCV/第5章 图像形态学 漫水填充算法
- 计算机图形学之区域填充
- learning opencv 3 形态学操作的应用
- OpenCV成长之路(6):数学形态学基本操作及其应用
- OpenCV成长之路(6):数学形态学基本操作及其应用
- OpenCV成长之路(6):数学形态学基本操作及其应用
- 如何在XAMPP配置网站首页
- Redis源码剖析和注释(二十七)--- Redis 故障转移流程和原理剖析
- solr服务器的搭建 for windows
- springboot输出日志
- 操作系统概念(高等教育出版社,第七版)复习——第三章:进程
- opencv形态学应用之区域填充
- 常用电子元器件及封装 20170612 周一
- 【swift】使用tabbarController出现的问题
- 配置项---tomcat环境变量的配置
- javaSwing_5布局管理器
- 文章标题
- 嵌入式视频方案学习第十一篇——视频编码模块VENC
- JVM对象的创建与内存管理
- springboot集成hibernate-jpa方式