我有我计算的图像的直方图。我想将其显示为图像,以便我可以实际看到直方图。我认为我的问题与缩放有关,尽管我对从左上角的 0,0 开始的坐标系也有些困惑。
int rows = channel.rows;
int cols = channel.cols;
int hist[256] = {0};
for(int i = 0; i<rows; i++)
{
for(int k = 0; k<cols; k++ )
{
int value = channel.at<cv::Vec3b>(i,k)[0];
hist[value] = hist[value] + 1;
}
}
Mat histPlot = cvCreateMat(256, 500,CV_8UC1);
for(int i = 0; i < 256; i++)
{
int mag = hist[i];
line(histPlot,Point(i,0),Point(i,mag),Scalar(255,0,0));
}
namedWindow("Hist",1);
imshow("Hist",histPlot);
这是我创建直方图并显示结果的计算。如果我在第二个循环中执行 mag/100,那么我会得到一些相似的情节出现(虽然是颠倒的)。每当我调整图像的值时,我都会调用此方法,因此直方图也应该改变形状,但它似乎没有这样做。感谢您对缩放直方图和正确显示它的任何帮助。