python - 如何使用 matplotlib 绘制 HSV 色轮
问题描述
是否可以在 python 中使用 matplotlib 绘制 HSV 色轮?我想得到一个像下图这样的 HSV 色轮作为光流的参考图像。在这张图片中,每种 HSV 颜色都可以表示为一个向量,其中方向以色调编码,长度以饱和度编码,以便我可以轻松地将其与光流进行比较。我在网上搜索过,但找不到满意的解决方案。任何帮助将不胜感激!
解决方案
以下代码使用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])
我们在这个交互式 Jupyter Notebook Matplotlib Widget 中使用它:
该存储库可在此处获得:https ://github.com/colour-science/gamut-mapping-ramblings
推荐阅读
- tensorflow2.0 - 类型错误:
() 接受 1 个位置参数,但给出了 2 个 - c# - 如何在不更改先前值的情况下在列表中附加值
- c - 如何将多个整数的列表转换为c中的单个整数?
- android - 如何将文本编辑值分配给 Android Studio Kotlin 中的浮点变量
- flexbox - fxflex 如何根据内容获取 div 大小
- sql-server-2008 - 选择哪一个 - SQL Server 中的游标与 WHILE 循环以获得更好的性能?
- php - UNION ALL 的数组绑定问题
- huggingface-transformers - 使用令牌特征训练模型
- java - CodenameOne 浮动操作按钮绑定错误
- spring-boot - 使用 spring boot kotlin 实现示例 Togglz