图片是什么色调?用华为云码道开发 OpenCV HSV 色调分布分析工具

前面已经做过主色提取、色彩偏移、色温分析,这次换一个更直观的颜色分析方式:

统计整张图片中不同 Hue 色调分别占多少。

这次我用华为云码道辅助开发了一个基于 OpenCV HSV 色彩空间的 Hue Distribution Analyzer,可以统计红、黄、绿、青、蓝、紫六类色调,并自动判断图片的 Dominant Hue。


1. 这次工具做什么?

主要功能包括:

  • 上传 JPG / PNG 图片
  • BGR 转 HSV
  • 过滤低饱和度像素
  • 统计六种 Hue 色调
  • 计算每种颜色占比
  • 判断 Dominant Hue
  • 生成 Hue Map
  • 显示颜色分布柱状图
  • 支持下载结果图

整体流程:

图片

→ HSV

→ Saturation 过滤

→ Hue 分类

→ 统计比例

→ Dominant Hue


2. 为什么使用 HSV?

普通 RGB 更适合表示:

红、绿、蓝三个通道的强度。

而 HSV 把颜色拆成:

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

这次我们主要关注:

H,也就是"这是什么颜色"。

核心转换:

复制代码
hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)h = hsv[:, :, 0]s = hsv[:, :, 1]

OpenCV 中 Hue 的范围不是 0~360,而是:

0~179


3. 为什么要过滤低饱和度像素?

白色、灰色、黑色这些区域,其实没有明显 Hue。

如果全部参与统计,很容易干扰结果。

所以这次只保留:

复制代码
valid = s > 40

也就是:

Saturation > 40

的像素。

本次测试一共得到:

1,426,504 个 Valid Color Pixels

这些像素才会参与后续颜色统计。


4. 六种颜色怎么划分?

这次把 Hue 简单划分为:

  • Red:0~10、170~179
  • Yellow:11~35
  • Green:36~85
  • Cyan:86~100
  • Blue:101~135
  • Purple:136~169

然后分别计算:

复制代码
颜色占比 = 当前颜色像素数 / 有效彩色像素数 × 100%

占比最高的一类,就是:

Dominant Hue


5. 真实测试结果

这次继续使用狗狗公园图片进行测试。

图片尺寸:

1650 × 953

最终得到:

  • Red:1.32%
  • Yellow:51.44%
  • Green:19.35%
  • Cyan:1.35%
  • Blue:26.40%
  • Purple:0.13%

最终:

Dominant Hue = Yellow

因为:

51.44% > 26.40% > 19.35%

黄色明显占据第一位。


6. 为什么 Yellow 会占 51.44%?

从原图也能看出来,狗狗本身有大量:

金黄色

浅黄色

棕黄色

的毛发。

同时草地、阳光照射区域中,也有不少像素会落入 Yellow 的 Hue 区间。

所以最终:

Yellow = 51.44%

成为最主要的色调。

这和肉眼看到的画面整体暖黄色感觉也是一致的。


7. Blue 为什么也有 26.40%?

图片中还有面积比较大的:

天空

湖面

这些区域主要贡献蓝色像素。

所以 Blue 最终达到:

26.40%

是第二大色调。

Green 则主要来自:

草地

树叶

远处植物

最终占:

19.35%

这三个颜色基本构成了整张图片的主要色调结构。


8. Hue Map 能看到什么?

页面右侧生成了:

Hue Map

可以非常直观地看到:

狗狗主体大量显示为黄色,天空显示为蓝色,植物区域则出现绿色。

而黑色区域主要代表:

没有参与 Hue 统计的低饱和度像素。

所以 Hue Map 相当于把原图中的颜色重新映射成:

六个固定颜色类别。


9. 它和主色提取有什么区别?

前面做过一个:

K-Means 主色提取工具

两者看起来都在分析颜色,但方法不一样。

主色提取:

从图片中自动聚类出几种代表颜色。

例如:

#A1C8F0

#B2A564

这类具体 RGB 颜色。

而这次 Hue Distribution:

提前定义红、黄、绿、青、蓝、紫六个类别,再统计各自比例。

所以一个更适合找:

代表颜色

另一个更适合看:

色调组成。


10. 总结

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

OpenCV HSV 色调分布分析工具。

核心流程:

BGR

→ HSV

→ Saturation Filter

→ Hue Classification

→ Ratio

→ Dominant Hue

本次真实测试结果:

  • Valid Color Pixels:1,426,504
  • Red:1.32%
  • Yellow:51.44%
  • Green:19.35%
  • Cyan:1.35%
  • Blue:26.40%
  • Purple:0.13%
  • Dominant Hue:Yellow

从 Hue Map 也可以直观看到,狗狗和部分草地区域贡献了大量黄色,而天空和湖面则贡献了比较明显的蓝色。

这一篇回答的就是:

一张图片到底主要由哪些色调组成?

下一篇可以继续做一个更偏图像处理的方向:

图片亮度不均怎么办?用华为云码道开发 OpenCV CLAHE 局部对比度增强工具

这样可以从"分析类工具"切换到"图像增强类工具",内容会更有变化。

相关推荐
严肃小白兔4 小时前
Cloudflare 开始区分 AI 爬虫与个人 Agent:网站访问控制应该怎样设计?
人工智能·爬虫
vipxieliang4 小时前
端侧芯片的「每瓦 Token 数」竞赛:端侧 AI 如何重塑芯片设计的底层逻辑
人工智能·openai
AI小百科4 小时前
AI 进游戏:游戏里的 NPC 开始有自己的性格
人工智能·游戏·ai
陈工大模型4 小时前
横琴×大湾区GEO规范共建计划正式启动:以“透明度量”重构跨境品牌信任新基建副标题:立足珠澳·辐射湾区——三方签约打造“可信GEO”全要素生态闭环
人工智能
狂师4 小时前
Agent 测评指标怎么选、怎么算?
人工智能·agent·测试
BioTender4 小时前
Xaira 发布 X-Automate:将物理 AI 与智能体 AI 引入实验室自动化
运维·人工智能·自动化
莪_幻尘4 小时前
当 AI 拿到工牌:WorkBuddy 打通企微背后的 AI 工作流之争
人工智能·agent
Zachery Pole4 小时前
【PlaNet 2】-RSSM机制
人工智能·深度学习·机器学习
麦壳饼5 小时前
SonnetDB 5.0 正式发布:增强 SQL 与事务,开放九模型 MCP 读写
数据库·人工智能·sql·sonnetdb