画直方图的主要步骤:直方图的创建→计算图像的直方图→画出直方图
IplImage *DrawHistogram(CvHistogram*hist, float scaleX = 1, float scaleY = 1)
{
float hisMax = 0;
cvGetMinMaxHistValue(hist,0,&hisMax,0,0);
IplImage *imgHist = cvCreateImage(cvSize(256* scaleX,64* scaleY),8,1);
cvZero(imgHist);
for (int i = 0; i < 255; i++)
{
float histValue = cvQueryHistValue_1D(hist,i);
float nextValue = cvQueryHistValue_1D(hist,i+1);
int numpt = 5;
CvPoint pt[5];
pt[0] = cvPoint(i*scaleX,64*scaleY);
pt[1] = cvPoint((i+1)*scaleX, 64 * scaleY);
pt[2] = cvPoint((i + 1)*scaleX,(1-(nextValue/hisMax))*64 * scaleY);
pt[3] = cvPoint((i + 1)*scaleX, (1 - (histValue / hisMax)) * 64 * scaleY);
pt[4] = cvPoint(i*scaleX, 64 * scaleY);
cvFillConvexPoly(imgHist, pt, numpt, cvScalarAll(255));
}
return imgHist;
}