opencv实现matlab imclearborder函数功能,去二值图边界的连通域。
2015-08-31 10:32
1091 查看
由于本人做的课程设计需要去掉靠近左右边缘的连通域。以前用matlab有 imclearborder这个函数。opencv并没有,于是自己写了一下。由于本人比较懒嫌麻烦于是只写了4连通域的而且程序写的也不怎么标准,大家可以按自己需求修改一下
给图像四周都加了一个0值像素
//迭代去除4联通域 void test(uchar *p,int ncol){ p[0]=0;//当前像素置0 while(p[1]){ test(p+1,ncol); } while(p[-ncol]){ test(p-ncol,ncol); } while(p[ncol]){ test(p+ncol,ncol); } while(p[-1]){ test(p-1,ncol); } } //去除靠边界的4连通域 Mat clearEdge(Mat &src){ Mat dst; src.copyTo(dst); dst=dst.t(); //装置是为了个人习惯指针方便一点 int nrow=dst.rows; int ncol=dst.cols; uchar *ipt=dst.ptr<uchar>(1); uchar *ipt1=dst.ptr<uchar>(nrow-2); for(int i=1;i<=ncol-2;i++) { if(ipt1[i]){ test(ipt1+i,ncol); } } for(int i=1;i<=ncol-2;i++) { if(ipt[i]){ test(ipt+i,ncol); } } return dst.t();//别忘了转回来 }为了不指针越界
copyMakeBorder(img3,img4,1,1,1,1,BORDER_CONSTANT,Scalar(0) );
给图像四周都加了一个0值像素
相关文章推荐
- 背景建模-均值法(Matlab)高斯背景建模(opencv)
- 【Matlab学习笔记】(二)matlab的帮助系统
- 使用C#,Matlab(2015a)混合编程
- Matlab中fft函数的用法及关键问题详解
- matlab生成GIF动态图像并保存或matlab生成avi视频
- 【Matlab学习笔记】(一)初识Matlab和简单计算
- matlab out-of-memory 3Gswitch
- matlab常用小函数(二)
- matlab中关于转到二值化图像的问题
- 在matlab下测试libsvm工具箱
- 读取matlab某个路径下的“.mat”文件,改变文件中的内容,并以原名字,变量保存
- LaTeX中加入Matlab中生成的图片
- 元胞数组和结构体数组
- matlab一些小技巧
- 整型规划问题优化器
- Matlab 文件夹遍历并更改图片尺寸
- matlab mod()&rem()
- matlab常用小函数(一)
- matlab函数之diag
- matlab 数组 乱序