请问一个C++的有关问题。在线啊

请教一个C++的问题。求助啊!在线啊!
void main()
{
int i,j;//循环变量
int n=0;
double aver = 0;
double var = 0;
double temp = 0;
CvRect  rect; //创建一个矩形区域

IplImage *img=0; //存原始图像的指针
img=cvLoadImage("ROI.bmp",0); //下载原始图像
rect=cvRect(0,0,64,64); //四个参数分别代表左上角的x.y坐标,矩形区域的宽度和高度
IplImage *Re_img = cvCreateImage (cvGetSize(img), IPL_DEPTH_8U, 1); //存输
出图像的指针
cvCopy(img,Re_img); 
cvRectangle (Re_img, cvPoint(rect.x,0), cvPoint(rect.width+rect.x,rect.height), CV_RGB(255,0,0), 1);//绘制矩形

计算灰度均值
for(i=0;i<img->height;i++)

    uchar * ptr = (uchar*)img->imageData + i*img->widthStep;

for(j=rect.x;j<rect.width + rect.x;j++)
{
aver += *ptr++;
}
}
       aver = aver/rect.height/rect.width;
   
   // 计算方差
for(i=0;i<img->height;i++)

uchar * ptr = (uchar*)img->imageData + i*img->widthStep;
for(j=rect.x;j<rect.width + rect.x;j++)
{
 double temp  = *ptr;
 var += (temp - aver) * (temp - aver);
}
}
  var=var/rect.height/rect.width;
      cout<<var;
cvNamedWindow("Roi_Add",1);
cvShowImage("Roi_Add",Re_img);
cvReleaseImageHeader(&Re_img);
cvWaitKey();

}

程序的功能是计算不同区域的方差值,rect=cvRect(0,0,64,64)改变区域。
问题是,改变区域后方差值的大小不变

------解决方案--------------------
你循环的边界不对吧
------解决方案--------------------
为什么是img->height,而不是rect.height
------解决方案--------------------
虽然有注释,但还是没看太懂