【发布时间】:2020-11-13 22:08:22
【问题描述】:
我不知道为什么,但它不起作用。
我试过以下代码:
matplotlib.colors.hsv_to_rgb([[[220 / 255, 255 / 255, 255 / 255]]])
matplotlib.colors.hsv_to_rgb([[[(220 % 360) / 255, 255 / 255, 255 / 255]]])
matplotlib.colors.hsv_to_rgb([[[220, 255, 255]]])
# same with
cv2.cvtColor(np.uint8([[[120, 255, 255]]]), cv2.COLOR_HSV2RGB)
但是当我绘制它时:
import matplotlib.pyplot as plt
plt.imshow(converted_color)
plt.show()
它显示了一些随机的东西
从GIMP获取值:
最终结果
h, s, v = 270, 100, 100
r, g, b = np.multiply((colorsys.hsv_to_rgb(h/360, s/100, v/100)), 255)
crop[mask == 0] = [r, g, b]
ex e len t!
这里是固定的 cv2 解决方案。 h - 最大 180。 opencv像往常一样按自己的方式做事……-___-
h, s, v = 270, 100, 100
r, g, b = cv2.cvtColor(np.uint8([[[h / 2, (s/100)*255, (v/100)*255]]]), cv2.COLOR_HSV2RGB)[0][0]
crop[mask == 0] = [r, g, b]
【问题讨论】:
-
为什么连续 3 个
[?该函数需要一个类似数组的对象,因此对于您的意图来说,一个就足够了,而且可能不会让 matplotlib 混淆。好像没关系。在任何情况下,第二个示例:只需除以 360。第三个:值应在 0 到 1 范围内 -
它是 np.uint8() 函数的一部分
标签: python image colors rgb hsv