请教一个C++的问题。求助啊!在线啊!

米斯兰达 2014-03-27 04:31:22
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)改变区域。
问题是,改变区域后方差值的大小不变
...全文
199 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
jmppok 2014-03-27
  • 打赏
  • 举报
回复
虽然有注释,但还是没看太懂
bobo928843007 2014-03-27
  • 打赏
  • 举报
回复
为什么是img->height,而不是rect.height
bobo928843007 2014-03-27
  • 打赏
  • 举报
回复
你循环的边界不对吧
shiguojie19892 2014-03-27
  • 打赏
  • 举报
回复
不太懂,。,
bobo928843007 2014-03-27
  • 打赏
  • 举报
回复
我见变了。。
米斯兰达 2014-03-27
  • 打赏
  • 举报
回复
怎么没人呢?马上下班啦要。。。。。。。。。。。。。。。

65,208

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧