opencv学习使用直方图统计像素

             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);
}

猜你喜欢

转载自blog.csdn.net/qq_42017043/article/details/83544057