double minPixel = -1;
double maxPixel = -1;
cvMinMaxLoc(subImg, &minPixel, &maxPixel);
ordinaryLinearStretch(subImg, (int)minPixel, (int)maxPixel, 0, 255);
void ordinaryLinearStretch(IplImage *gray, int Il, int Ih, int Ol = 0, int Oh = 255)
{
int srcPixel = 0;
int dstPixel = 0;
int width = gray->widthStep;
int height = gray->height;
IplImage *dst = cvCreateImage(cvGetSize(gray), gray->depth, 1);
int i, j;
for(i = 0; i < height; i++)
{
for(j = 0; j < width; j++)
{
srcPixel = gray->imageData[i * width + j];
dstPixel = (srcPixel - Il) * (Oh - Ol) / (Ih - Il) + Ol;
dst->imageData[i * width + j] = dstPixel;
//printf("%d \t", (unsigned char)dstPixel);
}
}
cvShowImage("dadada", gray);
memcpy(gray->imageData, dst->imageData, width * height);
cvShowImage("test", gray);
cvReleaseImage(&dst);
}