1. 程式人生 > >opencv學習使用直方圖統計畫素

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