#include <opencv2/opencv.hpp>
int main()
{
cv::Mat srcImage = cv::imread("..\\images\\flower3.jpg");
if( !srcImage.data )
return 1;
cv::imshow("srcImage",srcImage);
cv::Mat srcGray;
cv::cvtColor(srcImage,srcGray,CV_BGR2GRAY);
const int channels[1]={0};
const int histSize[1]={256};
float hranges[6]={0, 60, 120, 160, 220, 255};
const float* ranges[1] = {hranges};
cv::MatND hist;
cv::calcHist( &srcGray, 1,
channels, cv::Mat(),
hist, 1, histSize,
ranges );
double maxHist=0;
cv::minMaxLoc(hist, 0, &maxHist, 0 ,0);
int hist_Size = hist.rows;
cv::Mat histImg(hist_Size, hist_Size,
CV_8U, cv::Scalar(255));
for(int h = 0; h < hist_Size; h++)
{
float binVal = hist.at<float>(h);
int intensity = static_cast<int>(binVal *
hist_Size / maxHist);
cv::line(histImg, cv::Point(h, hist_Size),
cv::Point(h, hist_Size - intensity),
cv::Scalar::all(0));
}
cv::imshow("histImg", histImg);
cv::waitKey(0);
return 0;
}