资源简介

对于二值化图像,去除孔洞时采用的方法实际上与去除小区域相同,因此完全可以用同一个函数进行。 这两个功能可以采取区域生长法来实现。须注意,去除小区域时为保存有用信息,可采用8邻域探测,去除孔洞时则4邻域即可,否则容易泄露,出现靠边缘的孔洞未去除的情况。

资源截图

代码片段和文件信息


#include 
#include 
#include   
#include   
#include   
#include   


using namespace cv;
using namespace std;

void RemoveSmallRegion(Mat& Src Mat& Dst int AreaLimit=50 int CheckMode=1 int NeihborMode=0);

int main()  
{  
double t = (double)getTickCount();

char* imagePath = “E:\\SVM\\1.png“;
char* OutPath = “E:\\SVM\\11.jpg“;

Mat Src = imread(imagePath CV_LOAD_IMAGE_GRAYSCALE);
Mat Dst = Mat::zeros(Src.size() CV_8UC1);


//二值化处理
for(int i = 0; i < Src.rows; ++i)  
{  
uchar* iData = Src.ptr(i);
for(int j = 0; j < Src.cols; ++j)  
{  
if(iData[j] == 0 || iData[j]==255) continue;
else if (iData[j] < 10)  
{  
iData[j] = 0;

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        4836  2015-03-05 14:00  HoleFilling.cpp
     文件       13124  2015-01-08 21:15  局部.jpg
     文件       10491  2015-03-05 14:05  局部_孔洞填充.jpg

评论

共有 条评论