我正在使用Python的colorsys库:
import colorsys
colorsys.rgb_to_hsv(64, 208, 61)
output:(0.16666666666666666, 0, 208)
但是这个输出是错误的,这是使用 RGB 到 HSV 在线转换器得出的真实值:RGB to HSV
发生了什么?
我正在使用Python的colorsys库:
import colorsys
colorsys.rgb_to_hsv(64, 208, 61)
output:(0.16666666666666666, 0, 208)
但是这个输出是错误的,这是使用 RGB 到 HSV 在线转换器得出的真实值:RGB to HSV
发生了什么?
colorsys
的取值范围为 0
到 1
:
所有这些颜色空间中的坐标都是浮点数值。在 YIQ 空间中,Y 坐标的取值范围为 0 到 1,但 I 和 Q 坐标可以是正数或负数。在所有其他空间中,坐标都在 0 到 1 之间。
你需要将每个值除以 255.
才能得到期望的输出:
>>> colorsys.rgb_to_hsv(64/255., 208/255., 61/255.)
(0.3299319727891157, 0.7067307692307692, 0.8156862745098039)
>>> from colorir import sRGB
>>> sRGB(64, 208, 61).hsv(round_to=1)
HSV(118.8, 0.7, 0.8)
0.3299319727891157
乘以360
的结果为118.77551020408164
,这个数接近于120
。 - Dan D.h
乘以180,将s
和v
乘以255:green = np.uint8([[[0,255,0 ]]]); hsv = cv2.cvtColor(green, cv2.COLOR_RGB2HSV); array([[[ 60, 255, 255]]], dtype=uint8); 然后:hsv2 = colorsys.rgb_to_hsv(0, 1, 0); (180*hsv2[0], 255*hsv2[1], 255*hsv2[2]) ; (60.0, 255.0, 255)
- Mohdcolorsys.rgb_to_hsv(64/255., 208/255., 61/255.); (0.3299319727891157, 0.7067307692307692, 0.8156862745098039); x = colorsys.rgb_to_hsv(64/255., 208/255., 61/255.); print(x[0]*180); Out[194]: 59.38775510204082 ; 然后,使用openCV: col = np.uint8([[[64, 208, 61 ]]]); hsv = cv2.cvtColor(col, cv2.COLOR_RGB2HSV); print(hsv) Out[197]: array([[[ 59, 180, 208]]], dtype=uint8)
- Mohd