用Qt写一个灰度直方图
时间: 2023-05-15 16:05:58 浏览: 223
绘制灰度直方图
可以使用Qt的QImage类来读取图像数据,然后使用QPainter类来绘制直方图。以下是一个简单的示例代码:
```cpp
QImage image("image.png");
QVector<int> histogram(256, 0);
for (int y = 0; y < image.height(); y++) {
for (int x = 0; x < image.width(); x++) {
QRgb pixel = image.pixel(x, y);
int gray = qGray(pixel);
histogram[gray]++;
}
}
QPainter painter;
painter.begin(&widget);
painter.setPen(Qt::black);
int maxCount = *std::max_element(histogram.begin(), histogram.end());
for (int i = 0; i < 256; i++) {
int height = histogram[i] * widget.height() / maxCount;
painter.drawLine(i, widget.height(), i, widget.height() - height);
}
painter.end();
```
其中,image.png是要处理的图像文件名,widget是绘制直方图的QWidget对象。这段代码会计算图像的灰度直方图,并在widget上绘制出来。
阅读全文