如何使用 matplotlib 绘制 HSV 色轮

Kev*_* Hu 6 python colors matplotlib hsv

是否可以使用 python 中的 matplotlib 绘制 HSV 色轮?我想要获得如下图所示的 HSV 色轮作为光流的参考图像。在此图像中,每种 HSV 颜色都可以表示为一个向量,其中方向以色调编码,长度以饱和度编码,以便我可以轻松地将其与光流进行比较。我在网上搜索过但找不到满意的解决方案。任何帮助将不胜感激!

在此输入图像描述

Kel*_*aar 3

以下代码使用Color进行 HSV 到 RGB 的转换:

def colour_wheel(samples=1024, clip_circle=True, method='Colour'):
    xx, yy = np.meshgrid(
        np.linspace(-1, 1, samples), np.linspace(-1, 1, samples))

    S = np.sqrt(xx ** 2 + yy ** 2)    
    H = (np.arctan2(xx, yy) + np.pi) / (np.pi * 2)

    HSV = colour.utilities.tstack([H, S, np.ones(H.shape)])
    RGB = colour.HSV_to_RGB(HSV)

    if clip_circle == True:
        RGB[S > 1] = 0
        A = np.where(S > 1, 0, 1)
    else:
        A = np.ones(S.shape)

    if method.lower()== 'matplotlib':
        RGB = colour.utilities.orient(RGB, '90 CW')
    elif method.lower()== 'nuke':
        RGB = colour.utilities.orient(RGB, 'Flip')
        RGB = colour.utilities.orient(RGB, '90 CW')

    R, G, B = colour.utilities.tsplit(RGB)
    
    return colour.utilities.tstack([R, G, B, A])
Run Code Online (Sandbox Code Playgroud)

色轮

我们在这个交互式 Jupyter Notebook Matplotlib 小部件中使用它:

HSV 控制小部件

该存储库位于此处:https ://github.com/colour-science/gamut-mapping-ramblings