/第一次发微博,贴上闲时写的小程序
二值图像区域增长
/背景为黑色0,前景为白色255
void GrowR(IplImage* src,IplImage* src1,int flag)
{
int w=src->width ;
int h=src->height ;
int step=src->widthStep ;
/8邻域
if(flag==1)
{
int nDx1[]={-1,0,1,-1,1,-1,0,1};
int nDy1[]={-1,-1,-1,0,0,1,1,1};
for(int j=1;j<w-1;j++)
{
for(int i=1;i<h-1;i++)
{
int gg;
gg=(int)CV_IMAGE_ELEM(src,uchar,i,j);
if(gg>200)
{
int xx,yy;
CV_IMAGE_ELEM(src1,uchar,i,j)=gg;
for(int k=0;k<8;k++)
{
xx=j+nDx1[k];
yy=i+nDy1[k];
if(CV_IMAGE_ELEM(src,uchar,yy,xx)<10)
{
CV_IMAGE_ELEM(src1,uchar,yy,xx)=255;
}
}
}
}
}
}
///4领域
if(flag==2)
{
int nDx2[]={-1,0,1,0};
int nDy2[]={0,1,0,-1};
for(int j=1;j<w-1;j++)
{
for(int i=1;i<h-1;i++)
{
int gg;
gg=(int)CV_IMAGE_ELEM(src,uchar,i,j);
if(gg>200)
{
int xx,yy;
CV_IMAGE_ELEM(src1,uchar,i,j)=gg;
for(int k=0;k<4;k++)
{
xx=j+nDx2[k];
yy=i+nDy2[k];
if(CV_IMAGE_ELEM(src,uchar,yy,xx)<10)
{
CV_IMAGE_ELEM(src1,uchar,yy,xx)=255;
}
}
}
}
}
}
}