#include <opencv2/opencv.hpp>
#include<opencv2/core/core.hpp>
#include"opencv2/highgui/highgui.hpp"
#include<opencv2/imgproc/imgproc.hpp>
#include<iostream>
#include<time.h>
#include<vector>
using namespace std;
using namespace cv;
int main()
{
Mat srcImage;
srcImage=imread("C:/Users/离子键/source/repos/Project8/1.jpg",0);
MatND dstHist;
int dims = 1;
float hranges[] = { 0,255 };
const float* ranges[] = { hranges };
int size = 256;
int channels = 0;
calcHist(&srcImage, 1, &channels, Mat(), dstHist, dims, &size, ranges);
int scale = 1;
Mat dstImage(size * scale, size, CV_8U, Scalar(0));
double minValue = 0;
double maxValue = 0;
minMaxLoc(dstHist,&minValue,&maxValue,0,0);
int hpt = saturate_cast < int>(0.9 * size);
for (int i = 0; i < 256; i++)
{
float binValue = dstHist.at<float>(i);
int realValue = saturate_cast<int>(binValue * hpt / maxValue);
rectangle(dstImage,Point(i*scale,size-1),Point((i+1)*scale-1,size-realValue),Scalar(255));
}
imshow("原始图", srcImage);
imshow("一维直方图", dstImage);
waitKey();
return 0;
}
运行结果如图:
原版介绍: