利用直方图进行像素计数
1. 计算彩色图像的直方图
可以使用 cv::calcHist
函数计算多通道图像的直方图。以下是一个计算 BGR 彩色图像直方图的类的定义:
class ColorHistogram {
private:
int histSize[3]; // 每个维度的大小
float hranges[2]; // 值的范围(三个维度相同)
const float* ranges[3]; // 每个维度的范围
int channels[3]; // 要考虑的通道
public:
ColorHistogram() {
// 为彩色直方图准备默认参数
// 每个维度具有相同的大小和范围
histSize[0]= histSize[1]= histSize[2]= 256;
hranges[0]= 0.0; // BRG 范围从 0 到 256
hranges[1]= 256.0;
ranges[0]= hranges; // 在这个类中
ranges[1]= hranges; // 所有通道具有相同的范围
ranges[2]= hranges;
channels[0]= 0; // 三个通道:B
channels[1]= 1; // G
channels[2]= 2; // R
}
// 计算直方图