opencv绘制灰度直方图c++
时间: 2023-11-07 20:03:52 浏览: 233
灰度直方图 源代码 C++
4星 · 用户满意度95%
OpenCV提供了calcHist()函数来统计图像的直方图,但是需要我们自己进行绘制。calcHist()函数的原型如下所示:
```
void cv::calcHist(const Mat * images, int nimages, const int * channels, InputArray mask, OutputArray hist, int dims, const int * histSize, const float ** ranges, bool uniform = true, bool accumulate = false)
```
在绘制直方图时,可以使用Rectangle函数绘制矩形。通过遍历每个灰度级的像素个数,可以得到矩形的位置和大小。具体的步骤如下:
1. 准备一个全黑背景图作为直方图画布。
2. 遍历每个灰度级的像素个数,并计算矩形的坐标。
3. 使用Rectangle函数绘制矩形,并设置为填充矩形。
以下是一个主函数的调用示例:
```cpp
int main(int argc, char *argv[]) {
Mat src, gray, hist;
src = imread("2.jpg");
cvtColor(src, gray, CV_BGR2GRAY);
GetHist(gray, hist);
ShowHist(hist);
namedWindow("gray");
imshow("gray", gray);
waitKey(0);
return 0;
}
```
请注意,此示例中的函数GetHist和ShowHist是自定义的函数,用于计算和显示直方图。您可以根据需要自行实现这些函数。
阅读全文