opencv学习日记——绘制图像直方图
一、图像处理结果
二、代码部分
#include<iostream>
#include<opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main()
{
Mat img = imread("nazha.jpg");
Mat img1;
resize(img, img1, Size(650, 471));
if (img1.empty())
{
cout << "请输入正确图片";
return -1;
}
Mat gray;
cvtColor(img1, gray, COLOR_BGR2GRAY);
Mat hist;
const int channels[1] = {0};
float inRanges[2] = {0, 255};
const float * ranges[1] = {inRanges};
const int bins[1] = {256};
calcHist(&gray, 1, channels, Mat(), hist, 1, bins, ranges);
cout << hist << endl;
int hist_w = 512;
int hist_h = 400;
int width = 2;
Mat histImage = Mat::zeros(hist_h, hist_w, CV_8UC3);
for (int i = 1; i <= hist.rows; i++)
{
rectangle(histImage, Point(width * (i - 1), hist_h - 1), Point(width * i -1, hist_h - cvRound(hist.at<float>(i - 1) / 15)), Scalar(255, 255, 255), -1);
}
namedWindow("histImage", WINDOW_AUTOSIZE);
imshow("histImage", histImage);
imshow("gray", gray);
waitKey(0);
return 0;
}
}