#include "cv.h"
#include "highgui.h"
#include <stdio.h>
#include <iostream.h>
#define CLOCKS_PER_SEC ((clock_t)1000)
#ifdef _EiC
#define WIN32
#endif
static CvHaarClassifierCascade *cascade=0;
void LightingCompensation(IplImage *image)//光线补偿
{
IplImage *image1=cvCreateImage(cvGetSize(image),8,1);
IplImage *b=cvCreateImage(cvGetSize(image),8,1);
IplImage *g=cvCreateImage(cvGetSize(image),8,1);
IplImage *r=cvCreateImage(cvGetSize(image),8,1);
cvSplit(image,b,g,r,0);
int *gray=new int[256];
memset(gray,0,sizeof(int)*256);
int width,height,calnum;
width=image->width;
height=image->height;
calnum=0;
int sum=width*height;
int i,j;
int num=0;
int b1=0,g1=0,r1=0;
cvCvtColor(image,image1,CV_BGR2GRAY);
for(i=0;i<height;i++)
{
for(j=0;j<width;j++)
{
gray[((uchar*)(image1->imageData+i*image1->width))[j]]++;
}
}
for(i =0;i<256;i++)
{
if((float)calnum/sum < 0.05)
{
calnum+= gray[255-i];
num = i;
}
else
break;
}
int averagegray=0;
for(i=255;i>=255-num;i--)
{
averagegray+=gray[i]*i;
}