计算图像区域的重心(区域像素值的均值)

尘风断弦 2013-05-02 10:44:07
#include "iostream"
#include "cv.h"
#include "highgui.h"
#include "math.h"

const char* filename = "F:\\img_48.jpg";

void mouseHandler(int event, int x, int y, int flags, void* param)
{
int N=0;
int i,j;

IplImage* img,* img0, * img1;
CvScalar s = cvGet2D(img,i,j);

img0 = (IplImage*) param;
img1 = cvCloneImage(img0);

CvFont font;
uchar* ptr;
char label[50];

cvInitFont(&font, CV_FONT_HERSHEY_PLAIN, .8, .8, 0, 1, 8);
if (event == CV_EVENT_LBUTTONDOWN)
{
ptr = cvPtr2D(img1, y, x, NULL); //返回指向特殊数组元素的指针 && cvGet2D返回指向特殊数组的元素
sprintf(label, "(%d, %d, %d)" ,ptr[0], ptr[1], ptr[2]);

for (i=0;i<img->height;i++)
{
for (j=0;j<img->width;j++)
{
if (s.val[0] >= ptr[2] && s.val[1] >= ptr[1] && s.val[2] >= ptr[0])
{

s.val[0]+=s.val[0];
s.val[1]+=s.val[1];
s.val[2]+=s.val[2];
N++;

}
}
}

cvRectangle(
img1,
cvPoint(x, y-12 ),
cvPoint(x + 200, y + 20),
CV_RGB(255, 255, 0),
CV_FILLED,
8, 0
); //通过对角线上的两个顶点绘制简单、指定粗细或者带填充的矩形
cvPutText(
img1,
label,
cvPoint(x, y),
&font,
CV_RGB(255, 0, 0)
); //给定的字体和颜色在图像上显示文本字符串,img1:输入图像;label:要显示的字符串
//cvPoint(x, y):第一个字母左下角的坐标;font:指向字体结构的指针;CV_RGB:文本的颜色.
cvShowImage("img", img1);
}
}

int main(int argc, char** argv)
{
IplImage* img;


img = cvLoadImage(filename, 1);
assert(img);

cvNamedWindow("img",1);
cvSetMouseCallback("img", mouseHandler, (void*)img);
cvShowImage("img", img);
cvWaitKey(0);


cvDestroyAllWindows();
cvReleaseImage(&img);
return 0;
}
想要遍历整张图来比较一个点的像素值,并且进行计算均值,求出区域的重心点,求帮忙改改问题!
...全文
553 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
尘风断弦 2013-05-02
  • 打赏
  • 举报
回复
帮忙调试,好像是溢出了,数据计算太庞大了。

4,446

社区成员

发帖
与我相关
我的任务
社区描述
图形图像/机器视觉
社区管理员
  • 机器视觉
  • 迪菲赫尔曼
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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