【问题标题】:How to convert hsv to rgb in python?如何在python中将hsv转换为rgb?
【发布时间】: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


【解决方案1】:

尝试使用 colorsys:

import colorsys
colorsys.hsv_to_rgb(0.5, 0.5, 0.4)

输出:

(0.2, 0.4, 0.4)

编辑

一个例子可以是:

import matplotlib
import matplotlib.pyplot as plt
import colorsys

h, s, v = 0.83, 1.0, 0.50
#RGB from 0 to 1 NO from 0 to 255
r, g, b = colorsys.hsv_to_rgb(h, s, v)
print(r, g, b)

rect1 = matplotlib.patches.Rectangle((-200, -100), 400, 200, color=[r, g, b])
plt.axes().add_patch(rect1)
plt.show()

要了解使用 imshow 显示颜色时可能遇到问题的原因,请参阅:Printing one color using imshow

【讨论】:

  • hsv 中的紫色是 (0.83, 1.0, 0.50),rgb 中的紫色是 (0.50, 0.0, 0.50) @Oleg
  • 对于“255 格式”的 RGB,只需乘以 255 -> (128, 0, 128) @Oleg
  • 乘以 360?它只是缩放。注意:大多数程序需要从 0 到 1 的角度
  • 正确分割!! fiiiinaaalllyyy 哦,太难了,谢谢@MateoLara
  • 和@Giacomo Catenazzi
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多