图片是什么色调?用华为云码道开发 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 局部对比度增强工具

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

相关推荐
Frankie_stand1 小时前
智能体任务书:编写要素、方法与实际案例
人工智能
俊哥V1 小时前
每日 AI 研究简报 · 2026-10-16
人工智能·ai
QinHsiu1 小时前
35B模型塞进3GB内存:拆了MiniCPM-V的LES调度,我发现“按需加载”才是端侧MoE的真瓶颈
人工智能
云上先途11 小时前
Agent 轨迹数据一般包含哪些内容,加工的核心目标是什么?
人工智能·算法·机器学习
198******126341 小时前
2026企业AI办公平台选型指南:企业AI平台有哪些常见选择
人工智能
米小虾1 小时前
工具设计:为什么"多给工具"是个陷阱
人工智能·agent
把我格子衫拿来1 小时前
相机标定误差很小,为什么测量仍不准?从 OpenCV 重投影误差到独立验证
python·数码相机·opencv·计算机视觉·相机标定
米小虾1 小时前
ReAct:Agent 是怎么"边想边做"的
人工智能·agent
IvorySQL1 小时前
PostgreSQL 日报| PostgreSQL 19 RC1 正式发布(10 月 16 日)
数据库·人工智能·postgresql·开源