news 2026/10/17 10:47:18

图片颜色丰富不丰富?用华为云码道开发 OpenCV 色彩丰富度分析工具

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
图片颜色丰富不丰富?用华为云码道开发 OpenCV 色彩丰富度分析工具

前面已经做过图片亮度、对比度、色偏、过曝、欠曝这些基础图像分析,这次继续做一个和颜色有关的小工具:

图片色彩丰富度分析。

平时看一张图片,我们经常会觉得:

“这张图颜色很艳。”

“这张图有点灰。”

“这个画面颜色很淡。”

这种感觉其实和:

Saturation,饱和度

有很大关系。

所以这次我用华为云码道辅助开发了一个简单的:

OpenCV Image Colorfulness Analyzer

上传图片以后,程序会自动分析 HSV 中的 Saturation 通道,并给出:

Average Saturation
Maximum Saturation
Colorfulness Score
Saturation Level

同时还会绘制一张饱和度直方图。


一、什么是 Saturation?

在 HSV 色彩空间中:

H:Hue,色相
S:Saturation,饱和度
V:Value,亮度

其中 Saturation 可以简单理解成:

颜色到底有多“浓”。

例如:

一张鲜艳的红色图片,Saturation 通常比较高。

而一张接近灰色的图片,即使亮度很高,Saturation 也可能很低。

所以如果想分析:

一张图片整体颜色丰富不丰富

可以从 Saturation 入手。


二、为什么不用 RGB 直接判断?

前面做色偏分析时,使用的是 RGB 三个通道平均值。

那一篇回答的是:

图片整体偏红、偏绿还是偏蓝?

而这一篇关注的是:

颜色到底浓不浓。

例如一张图片可能不偏任何颜色,但整体很灰。

这种情况下:

RGB 三个通道可能比较接近,

但 Saturation 会很低。

所以两个指标的用途不同。


三、这次工具做了哪些功能?

这次项目依然保持轻量,主要包括:

  • 上传 JPG / PNG 图片
  • 转换到 HSV 色彩空间
  • 提取 Saturation 通道
  • 计算 Average Saturation
  • 计算 Maximum Saturation
  • 生成 Colorfulness Score
  • 判断 Low / Normal / High Saturation
  • 绘制 Saturation Histogram
  • 支持下载分析图

整个流程就是:

上传图片
↓
OpenCV 转 HSV
↓
提取 Saturation
↓
计算平均值
↓
判断饱和度等级
↓
生成直方图


四、核心算法其实很简单

先把 OpenCV 读取到的 BGR 图片转换成 HSV:

hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)

然后取 Saturation 通道:

s = hsv[:, :, 1]

接着计算:

avg_saturation = s.mean()max_saturation = s.max()

这次为了保持工具简单,

Colorfulness Score 直接使用:

Average Saturation

也就是:

Colorfulness Score = Average Saturation

五、这次怎么判断饱和度等级?

当前设置了三个简单区间:

Average Saturation < 60

→Low Saturation

60 ≤ Average Saturation < 140

→Normal Saturation

Average Saturation ≥ 140

→High Saturation

这套阈值主要是为了做直观分类。

它并不是专业图像质量评价标准。

页面里也专门标注了:

Heuristic metric

也就是:

启发式指标。


六、真实测试结果

这次继续使用之前的狗狗公园图片。

最终得到:

Colorfulness Score:

114.31

Average Saturation:

114.31 / 255

Maximum Saturation:

255

Saturation Level:

Normal Saturation

按照当前阈值:

114.31 位于:

60~140

之间。

所以最终被判断为:

Normal Saturation


七、为什么这张图片是 Normal Saturation?

从原图来看,这个结果其实比较符合直觉。

图片里包含:

蓝天
绿色草地
树木
金黄色狗狗毛发

颜色种类很多。

但这些颜色并没有整体达到非常夸张、非常艳丽的程度。

所以:

Average Saturation = 114.31

属于中等范围。

也就是说:

颜色比较丰富,但整体饱和度没有高到“艳得发亮”的程度。


八、Maximum Saturation = 255 是什么意思?

这次页面中还显示:

Maximum Saturation:255

说明图片中至少存在一些像素达到了当前 HSV Saturation 通道的最大值。

也就是:

某些局部区域颜色非常纯、非常饱和。

但这里需要注意:

Maximum Saturation 只能说明:

最饱和的局部像素有多高。

它不能代表整张图片的整体色彩情况。

真正判断整张图时,Average Saturation 更有参考意义。


九、为什么平均值比最大值更重要?

假设一张图片几乎全是灰色,

只有一个很小的红点。

那个红点的 Saturation 可能达到:

255

但整张图片看起来依然不会很鲜艳。

所以:

Maximum Saturation 很容易被少量局部像素影响。

而:

Average Saturation

考虑了整张图片所有像素。

因此更适合用来判断:

整体饱和度水平。


十、Saturation Histogram 能看出什么?

这次页面还绘制了:

Saturation Histogram

横轴是:

0~255

左边:

低饱和度

右边:

高饱和度

从这次结果可以看到,

图片中的 Saturation 并不是集中在某一个非常窄的区间,

而是在中间范围有比较明显的分布。

这也和最终:

Average Saturation = 114.31

比较一致。


十一、Low Saturation 是什么样?

如果图片整体颜色比较灰、比较淡,

那么 Saturation 通道就会偏低。

例如:

雾天
灰色建筑
低饱和滤镜
接近黑白的图片

这些图片可能得到:

Average Saturation < 60

最后判断为:

Low Saturation

视觉上通常会感觉:

颜色不浓,整体比较平。


十二、High Saturation 又是什么样?

如果图片包含大量非常鲜艳的颜色,

例如:

霓虹灯
高饱和海报
艳丽花朵
强烈滤镜

那么 Saturation 可能明显升高。

当:

Average Saturation ≥ 140

就会被当前工具判断为:

High Saturation

这种图片通常会有比较明显的:

鲜艳、浓烈、强色彩感。


十三、Colorfulness 和 Color Bias 有什么区别?

这两个项目虽然都和颜色有关,但关注点完全不同。

前面的 Color Bias Analyzer:

看的是:

哪一个 RGB 通道更强。

回答:

偏红?
偏绿?
偏蓝?

这次的 Colorfulness Analyzer:

看的是:

整体饱和度高不高。

回答:

颜色淡不淡?
颜色浓不浓?

所以:

Color Bias

更关注颜色方向。

Colorfulness

更关注颜色强度。


十四、这个指标有什么局限?

Average Saturation 只是一个很简单的统计指标。

它不能直接代表:

图片质量
色彩准确度
视觉美感

例如:

一张专业的低饱和摄影作品,

Average Saturation 可能很低,

但图片本身依然很好看。

同样:

一张严重过度调色的图片,

Saturation 很高,

也不代表它质量更好。

所以这个工具更适合:

分析颜色强弱

而不是评价:

图片好不好。


十五、可以用在哪里?

这种简单的 Saturation 分析可以用于很多基础场景。

例如:

数据集分析

快速找出:

低饱和图片
高饱和图片
颜色分布异常的样本

图片风格分类

可以辅助判断:

偏灰风格
正常色彩
高饱和风格

图像增强前后比较

例如调整 Saturation 前后,可以比较:

Average Saturation

有没有明显变化。

摄影和设计辅助

也可以快速观察一张图片整体颜色到底有多浓。


总结

这次用华为云码道辅助开发了一个:

OpenCV 图片色彩丰富度分析工具。

核心流程:

上传图片
↓
转换 HSV
↓
提取 Saturation 通道
↓
计算 Average Saturation
↓
计算 Maximum Saturation
↓
生成 Colorfulness Score
↓
判断 Saturation Level
↓
绘制 Saturation Histogram

真实测试结果:

Colorfulness Score:

114.31

Average Saturation:

114.31 / 255

Maximum Saturation:

255

Saturation Level:

Normal Saturation

从原图来看,蓝天、草地和狗狗毛发都提供了比较丰富的颜色,但整体又没有特别夸张,所以最终判断为 Normal Saturation 也比较合理。

前一篇色偏分析回答的是:

图片偏什么颜色?

这一篇则进一步回答:

图片里的颜色到底浓不浓?

下一篇可以继续做一个同样简单、但视觉效果不错的方向:

图片颜色冷还是暖?用华为云码道开发 OpenCV 色温倾向分析工具

通过蓝色和红色通道的相对关系,给出:

Cool / Neutral / Warm

三种简单色温倾向。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/17 10:45:58

win10自带杀毒软件在哪里关?6种方法搞定Defender与防火墙

2026年了&#xff0c;依然有大量用户在安装行业工具、运行游戏补丁或老款驱动时被系统突然拦下&#xff0c;弹出一句“已阻止此应用运行”。这种时候&#xff0c;很多人第一反应就是去找&#xff1a;win10自带杀毒软件在哪里关&#xff1f;其实&#xff0c;win10自带的杀毒防护…

作者头像 李华
网站建设 2026/10/17 10:45:47

小餐饮记账软件采购录入营业额管理超方便

软件介绍 专为小餐饮店设计的记账软件。开小餐饮店的朋友都知道&#xff0c;每天的采购、营业额、进货渠道乱七八糟的&#xff0c;用纸笔记容易丢&#xff0c;用Excel记又太麻烦。这款小工具就是专门解决这个问题的。 首次使用先建档案 第一次用软件&#xff0c;不要急着录入…

作者头像 李华
网站建设 2026/10/17 10:45:43

高通Camera升级基线全解析:驱动、HAL与Tuning适配实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/17 10:45:05

ODPS升级:AI原生全模态大数据基础设施

1. 这不是一次普通升级&#xff1a;当ODPS从“数据仓库”蜕变为AI原生底座“云栖2026 | ODPS 全面升级&#xff1a;构建AI原生的全模态大数据基础设施”——这个标题乍看是场技术发布会预告&#xff0c;但如果你在数据平台一线干过三年以上&#xff0c;第一反应绝不是点开日程表…

作者头像 李华