图像平滑简单处理
//平滑图片
//原理:如果周边8个点,》4个是背景色,则改点改背景色,如果》4是前景色,则改前景色
//边框无处理
int Effect::Smooth()
{
//周边8色
// 0 1 2
// 3 * 4
// 5 6 7
bmpcolor pixColor[8];
//计数器
int bg_count = 0;
int f_count = 0;
for (int x = 2; x <= this->bmpInfo.biWidth - 1;x++)
{
for (int y = 2; y <= this->bmpInfo.biHeight - 1;y++)
{
bg_count = 0;
f_count = 0;
pixColor[0] = this->GetPixColor(x - 1,y - 1);
pixColor[1] = this->GetPixColor(x,y - 1);
pixColor[2] = this->GetPixColor(x + 1,y - 1);
pixColor[3] = this->GetPixColor(x - 1,y);
pixColor[4] = this->GetPixColor(x + 1,y);
pixColor[5] = this->GetPixColor(x - 1,y + 1);
pixColor[6] = this->GetPixColor(x,y + 1);
pixColor[7] = this->GetPixColor(x + 1,y + 1);
//比较
for (int i = 0; i < 8; i++)
{
if (pixColor[i] == bgcolor)
{
bg_count++;
} else if (pixColor[i] == fcolor)
{
f_count++;
}
}
if(bg_count > 4)
{
this->SetPixColor(x,y,bgcolor);
}
else if (f_count > 4)
{
this->SetPixColor(x,y,fcolor);
}
}
}
return 0;
}