要在 OpenCV 中计算直方图,可简单地调用 cv::calcHist 函数。这是一个通用的直方图计算函数,可处理包含任何值类型和范围的多通道图像。为了简化,这里指定一个专门用于处理单通道灰度图像的类。cv::calcHist 函数非常灵活,在处理其他类型的图像时都可以直接使用它。
这个专用类的初始化代码为:
// 创建灰度图像的直方图
class Histogram1D {
private:
int histSize[1]; // 直方图中箱子的数量
float hranges[2]; // 值范围
const float* ranges[1]; // 值范围的指针
int channels[1]; // 要检查的通道数量
public:
Histogram1D() {
// 准备一维直方图的默认参数
histSize[0]= 256; // 256 个箱子
hranges[0]= 0.0; // 从 0 开始(含)
hranges[1]= 256.0; // 到 256(不含)
ranges[0]= hranges;
channels[0]= 0; // 先关