图像平滑简单处理

 

//平滑图片
//原理:如果周边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;
}

转载于:https://www.cnblogs.com/iceflower/archive/2011/10/21/2219764.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值