如何在Opencv直方图中更改宽度比例。(640 X 480)

时间:2015-08-25 02:06:04

标签: c++ qt opencv

如何在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);

}

下面的图片显示了我的代码结果。

enter image description here

0 个答案:

没有答案