如何在Opencv直方图中更改宽度比例。
我的代码结果表示宽度0~255,但我想更改宽度640以使用Scale。我希望你找到我在代码上的错误,并向我建议解决方案..
请帮助我。
void MainWindow::Basic_Histogram(IplImage* timage)
{
IplImage* canvas;
int hist[256];
double scale=1;
int i,j,max=0;
QImage pimage;
canvas = cvCreateImage(cvSize(640, 480), IPL_DEPTH_8U, 3);
cvSet(canvas,CV_RGB(255,255,255),0);
for(i=0;i<256;i++)
{
hist[i]=0;
}
for(i=0;i<timage->height;i++)
{
for(j=0;j<timage->width;j++)
{
hist[(uchar)timage->imageData[(i * timage->widthStep) + j]]++;
}
}
max = 256 * 10;
for (i = 0; i < 256; i++)
{
max = hist[i] > max ? hist[i] : max;
}
scale = max > canvas->height ? (double)canvas->height/max : 1.;
for (i = 0; i < 256; i++)
{
CvPoint pt1 = cvPoint(i, canvas->height - (hist[i] * scale));
CvPoint pt2 = cvPoint(i, canvas->height);
cvLine(canvas, pt1, pt2, CV_RGB(0,0,0), 1, 8, 0);
}
pimage = IplImage2QImage(canvas);
emit newEdgeFrame(pimage);
cvReleaseImage(&canvas);
}
下面的图片显示了我的代码结果。