Qt图像处理技术九:得到QImage图像的灰度直方图

效果

原理

得到灰度化值,将灰度化的值带入0-255内,增加,得到可视化图形

源码

cpp 复制代码
// 绘制直方图
QImage drawHistogram(const QImage &image)
{
    QVector<int> histogram(256, 0);

    // 计算图像的灰度直方图
    for (int y = 0; y < image.height(); ++y) {
        for (int x = 0; x < image.width(); ++x) {
            QColor color(image.pixel(x, y));
            int intensity = qGray(color.rgb());
            histogram[intensity]++;
        }
    }

    int maxValue = *std::max_element(histogram.constBegin(), histogram.constEnd());

    QImage histogramImage(256, maxValue, QImage::Format_RGB32);
    histogramImage.fill(Qt::white);

    QPainter painter(&histogramImage);
    painter.setPen(Qt::black);

    for (int i = 0; i < histogram.size(); ++i) {
        int height = histogram[i] * histogramImage.height() / maxValue;
        painter.drawLine(i, histogramImage.height(), i, histogramImage.height() - height);
    }

    return histogramImage;
}
相关推荐
郝学胜-神的一滴6 分钟前
OpenGL的glDrawElements函数详解
开发语言·c++·程序人生·游戏·图形渲染
moxiaoran575315 分钟前
Go语言结构体
开发语言·后端·golang
wearegogog12323 分钟前
基于C# WinForm实现的带条码打印的固定资产管理
开发语言·c#
Lvan的前端笔记26 分钟前
python:深入理解 Python 的 `__name__ == “__main__“` 与双下划线(dunder)机制
开发语言·python
董世昌411 小时前
什么是扩展运算符?有什么使用场景?
开发语言·前端·javascript
lsx2024061 小时前
C++ 重载运算符和重载函数
开发语言
刺客xs1 小时前
Qt------信号槽,属性,对象树
开发语言·qt·命令模式
2501_921649491 小时前
免费获取股票历史行情与分时K线数据 API
开发语言·后端·python·金融·数据分析
尤物程序猿2 小时前
Java如何不建表完成各种复杂的映射关系(鉴权概念、区域概念、通用概念)
java·开发语言
Insight.2 小时前
背包问题——01背包、完全背包、多重背包、分组背包(Python)
开发语言·python