1.图像由像素组成,在一个单通道的灰度图像中,每个像素的值介于0(黑色)~255(白色)之间。
2.在opencv中计算直方图可以通过使用calcHist函数。
3.class:类
4.MatND指多维数组
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
//定义专门的类来处理单通道的灰度图像:
class Histogram1D {
private:
int histSize[1];
float hranges[2];
const float*ranges[1];
int channels[1];
public:
Histogram1D() {
histSize[0] = 256;
hranges[0] = 0.0;
hranges[1] = 255.0;
ranges[0] = hranges;
channels[0] = 0;
}
//计算一个灰度直方图
MatND getHistogram(const Mat&image) {
MatND hist;
calcHist(&image,
1,
channels,
Mat(),
hist,
1,
histSize,
ranges
);
return hist;
}
};
int main() {
Mat image = imread("3.jpg", 0);
Histogram1D h;
MatND histo = h.getHistogram(image);
for (int i = 0; i < 256; i++)
cout << "value" << i << "=" <<histo.at<float>(i) << endl;
waitKey(0);
}