亮度

来源:互联网 发布:网络机房设备清单 编辑:程序博客网 时间:2024/04/30 11:11
亮度平衡    
  int   CImgProcesser::BalanceColor(char   *iplImage_,unsigned   char   desColor)  
  {  
  int   i,j;  
  IplImage   *iplImage=(IplImage*)iplImage_;  
   
  unsigned   long   cn;//总灰度  
  short   diff;//灰度差  
  unsigned   char   edgeL,edgeH;  
   
  //统计平均灰度  
  cn=0;  
  for(i=0;i<iplImage->height   ;i++)  
  {  
  for   (j=0;j<iplImage->width     ;j++)  
  {  
  cn+=(unsigned   char)iplImage->imageDataOrigin[i*iplImage->widthStep   +j*3+0];  
  cn+=(unsigned   char)iplImage->imageDataOrigin[i*iplImage->widthStep   +j*3+1];  
  cn+=(unsigned   char)iplImage->imageDataOrigin[i*iplImage->widthStep   +j*3+2];  
  }  
  }  
  cn/=(iplImage->width   *iplImage->height*3);  
   
  //调教到目标平均灰度  
  diff=cn-desColor;  
  for(i=0;i<iplImage->height   ;i++)  
  {  
  for   (j=0;j<iplImage->width     ;j++)  
  {  
  unsigned   char   *c1=(unsigned   char*)&iplImage->imageDataOrigin[i*iplImage->widthStep   +j*3+0];  
  unsigned   char   *c2=(unsigned   char*)&iplImage->imageDataOrigin[i*iplImage->widthStep   +j*3+1];  
  unsigned   char   *c3=(unsigned   char*)&iplImage->imageDataOrigin[i*iplImage->widthStep   +j*3+2];  
  //调较到目标平均灰度  
  if(*c1-diff>255)  
  *c1=255;  
  else   if(*c1-diff<0)  
  *c1=0;  
  else  
  *c1-=diff;  
   
  if(*c2-diff>255)  
  *c2=255;  
  else   if(*c2-diff<0)  
  *c2=0;  
  else  
  *c2-=diff;  
   
  if(*c3-diff>255)  
  *c3=255;  
  else   if(*c3-diff<0)  
  *c3=0;  
  else  
  *c3-=diff;  
  }  
  }  
   
  return   0;  
  } 
原创粉丝点击