有没有一种编码方法来检查调色板是不是遵循类似、单色、三色等色轮的配色方案?

Posted

技术标签:

【中文标题】有没有一种编码方法来检查调色板是不是遵循类似、单色、三色等色轮的配色方案?【英文标题】:is there a coding way to check whether a color palette follows the color schemes of a color wheel like Analogous, monochromatic, triadic etc..?有没有一种编码方法来检查调色板是否遵循类似、单色、三色等色轮的配色方案? 【发布时间】:2021-12-21 00:37:02 【问题描述】:

我渴望建立一个系统来判断我的调色板是否遵循色轮中的任何配色方案,即单色、类似、互补、分离互补、三色、正方形和矩形(或四色)。

最近几天我一直在思考这个问题,但想不出什么。

我没有太多关于从哪里开始的线索,请如果我能得到一些关于如何继续使用 python 的初步想法。

【问题讨论】:

【参考方案1】:

我不是色彩理论家,如果有知识/经验的人贡献更专业的东西,我会很乐意删除我的建议。

我猜你想转换成HSL/HSV colourspace,你可以用ImageMagickOpenCV非常简单地做到这一点。

对于单色,您需要查看色调通道(角度),看看是否所有色调都在 10-15 度范围内。

为了互补,您需要寻找相隔约 180 度的 2 组色相角。

对于三元组,3 个角簇相隔约 120 度。等等。我不知道更奇特的方案。

您可以像这样使用 OpenCV 获得 HSV:

import cv2

# Open image as BGR
im = cv2.imread(XXX)

# Convert to HSV
HSV = cv2.cvtColor(im, cv2.COLOR_BGR2HSV)

请记住,OpenCV 色调角度是常规值的一半,因此如果处理 8 位图像,0..360 范围适合作为 0..180 的无符号 8 位整数内.处理浮点数时,范围是常规的 0..360。


这是一个带有色轮的小例子,我使用 ImageMagick 将图像分成色调、饱和度和值,然后将通道彼此并排布置,色调在左侧,饱和度在右边的中心和Value:

magick colorwheel.png -colorspace HSV -separate +append separated.png

输入图像

分离图像

希望您可以看到 Hue 值在左侧面板中的色轮周围,Saturation 会随着您远离中心而降低,并且 Saturation strong>价值随着您径向向外移动而增加。

您可以将颜色选择器悬停在绿色调上,看看它们都有相似的色调。因此,如果您正在寻找互补色。例如,将鼠标悬停在两者上,看看它们是否相差 180 度 Hue

【讨论】:

感谢@Mark,这种方法让我清楚地开始思考这个方向。

以上是关于有没有一种编码方法来检查调色板是不是遵循类似、单色、三色等色轮的配色方案?的主要内容,如果未能解决你的问题,请参考以下文章

如何将调色板应用于位图

设置多色标签栏图标而不是单色图标

如何检查图像是单色还是空白?

有没有一种 Pythonic 方法来检查操作系统是不是是 64 位 Ubuntu?

为 Julia 集生成自定义调色板

检查列表是不是已排序的 Pythonic 方法