自主选择性的查看一幅图像中的部分区域的颜色直方图:允许用户在一幅图像中选择一个矩
形区域,通过按住鼠标键画一个矩形,当鼠标放开是,高亮显示矩形框,同时在另一个独立
的窗口中,使用画图函数画一个图表(选定区域的颜色直方图),分别用蓝,绿,红表示选
中区域中每种颜色的像素数量。
#include <cv.h>
#include <highgui.h>
#include <stdio.h>
CvRect g_rect;
bool g_isdown;
void my_callback(int event, int x, int y, int flags, void* param);
//将 image 图像的 rect 区域部分做加亮处理
void high_light(IplImage *image,CvRect rect);
//对选中的部分绘制直方图
void Draw_hist(IplImage* img,CvRect Rect);
int main()
{
IplImage *orginal_image=cvLoadImage("fruits.jpg");
assert(orginal_image!=NULL);
IplImage *temp_image=cvCreateImage(cvGetSize(orginal_image),
orginal_image->depth,
orginal_image->nChannels);
assert(temp_image!=NULL);
cvNamedWindow("Show");
cvSetMouseCallback("Show",my_callback,(void*)temp_image);
while (1)
{IplImage *temp_image= cvCloneImage(orginal_image);
if (true==g_isdown)
{
high_light(temp_image,g_rect);
Draw_hist(temp_image,g_rect);
}
else
{
high_light(temp_image,g_rect);
Draw_hist(temp_image,g_rect);
}
cvShowImage("Show",temp_image);
if (27==cvWaitKey(30))
{
break;
}
}