19,468
社区成员
发帖
与我相关
我的任务
分享
/* 水平腐蚀函数 */
/*list0 标准图像数据指针
list1 扩充边框后图像数据指针
Dx/Dy 标准图像的宽度和高度
style 腐蚀类型 /HORIZONTAL_CORRODE 水平腐蚀/VERTICAL_CORRODE 垂直腐蚀/CROSS_CORRODE 十字腐蚀*/
void CUtilities::Corrode(BYTE** list0, BYTE** list1, int Dx, int Dy,int style)
{
int i,j;
switch(style)
{
case HORIZONTAL_CORRODE:
for(i=1; i<Dy+1; i++)
{
for(j=1; j<Dx+1; j++)
{
if((list1[i][j-1]==BLACK)&&(list1[i][j]==BLACK)&&(list1[i][j+1]==BLACK))
list0[i-1][j-1]=BLACK;
else
list0[i-1][j-1]=WHITE;
}
}
break;
case VERTICAL_CORRODE:
for(i=1; i<Dy+1; i++)
{
for(j=1; j<Dx+1; j++)
{
if((list1[i-1][j]==BLACK)&&(list1[i][j]==BLACK)&&(list1[i+1][j]==BLACK))
list0[i-1][j-1]=BLACK;
else
list0[i-1][j-1]=WHITE;
}
}
break;
case CROSS_CORRODE:
for(i=1; i<Dy+1; i++)
{
for(j=1; j<Dx+1; j++)
{
if((list1[i][j-1]==BLACK)&&(list1[i-1][j]==BLACK)&&(list1[i][j+1]==BLACK)&&(list1[i+1][j]==BLACK)&&(list1[i][j]==BLACK))
list0[i-1][j-1]=BLACK;
else
list0[i-1][j-1]=WHITE;
}
}
break;
default:
break;
}
}