Mat calcHistImage(Mat Image)
{
const int channels[1] = { 0 };
const int histSize[1] = { 256 };
float hranges[2] = { 0, 255 };
const float* ranges[1] = { hranges };
Mat hist;
calcHist(&Image, 1, channels, Mat(), hist, 1, histSize, ranges);
double maxVal = 0;
double minVal = 0;
//找到直方图中的最大值和最小值
minMaxLoc(hist, &minVal, &maxVal, 0, 0);
int histHeight = hist.rows;
Mat histImg(histHeight, 256, CV_8U, Scalar(255));
// 设置最大峰值为图像高度的90%
int hpt = static_cast<int>(0.9*histHeight);
for (int h = 0; h < histHeight; h++)
{
int intensity = static_cast<int>(hist.at<float>(h)*hpt / maxVal);
line(histImg, Point(h, histHeight), Point(h, histHeight - intensity), Scalar::all(0));
}
return histImg;
}
opencv直方图显示
最新推荐文章于 2025-09-10 23:23:46 发布
本文介绍了一种使用OpenCV库来计算并绘制灰度图像直方图的方法。该方法通过calcHist函数计算图像直方图,并按比例绘制直方图到一个新的图像中,便于视觉分析。
524

被折叠的 条评论
为什么被折叠?



