显示直方图图openCV

显示直方图图openCV,opencv,image-processing,histogram,Opencv,Image Processing,Histogram,我有我计算过的图像的直方图。我想把它显示为一个图像,这样我就可以看到直方图了。我认为我的问题与缩放有关,尽管我对从左上角0,0开始的坐标系有点困惑 int rows=channel.rows; int cols=channel.cols; int hist[256]={0}; 对于(int i=0;i 请不要使用cvCreateMat(又名,旧的c-api),您的行和列似乎也有错误,此外,如果您想要彩色绘图,您还需要彩色图像,因此请确保: Mat histPlot(500、256、CV_8UC3

我有我计算过的图像的直方图。我想把它显示为一个图像,这样我就可以看到直方图了。我认为我的问题与缩放有关,尽管我对从左上角0,0开始的坐标系有点困惑

int rows=channel.rows;
int cols=channel.cols;
int hist[256]={0};
对于(int i=0;i
  • 请不要使用cvCreateMat(又名,旧的c-api),您的行和列似乎也有错误,此外,如果您想要彩色绘图,您还需要彩色图像,因此请确保:

    Mat histPlot(500、256、CV_8UC3);

  • 图像原点位于左上角(0,0),因此必须将y倒过来:

    line(histPlot,点(i,histPlot.rows-1),点(i,histPlot.rows-1-mag/100),标量(255,0,0));


是的,这对我的问题进行了排序。它没有更改绘图,因为我在编辑图像之前调用了上述函数,而不是在图像更改之后。不过还有最后一个问题。是否可以在使用histPlot后清除histPlot?我在“Hist”窗口中显示绘图我希望它保持在那里,然后在我对图像进行更改时更新。目前调用了上面的函数,但新的绘图覆盖在以前的绘图上。我认为“Mat histPlot(500,256,CV_8UC3);”每次调用该函数时都会清除histPlot的内容。我有一个基本的图像编辑器,因此我可以更改图像的对比度、锐度、亮度等。每当我进行更改时,我也想显示当前图像的直方图。上面的函数创建并显示直方图。每当我对image调用上述函数来更新直方图并在同一窗口中显示。问题是,尽管正在创建新的直方图,但在直方图窗口“Hist”中仍会显示旧的直方图。因此,它不会显示更新后的直方图,而是将更新后的直方图覆盖在上一个直方图上。听起来您需要为每一帧创建一个新的histPlot Mat,然后将当前hist绘制到该图中