Python の pygame モジュールを使用して、HSV カラー引数を RGB タイプのカラー引数に変換する方法はありますか? 次のコードを試しましたが、おかしな値が返されます。
import colorsys
test_color = colorsys.hsv_to_rgb(359, 100, 100)
print(test_color)
そしてこのコードは次のような意味不明な結果を返す
(100, -9900.0, -9900.0)
これは明らかに RGB ではありません。何が間違っているのでしょうか?
ベストアンサー1
この関数は、s
(彩度) とv
(値) にパーセントではなく小数を想定しています。100 で割ります。
>>> import colorsys
# Using percent, incorrect
>>> test_color = colorsys.hsv_to_rgb(359,100,100)
>>> test_color
(100, -9900.0, -9900.0)
# Using decimal, correct
>>> test_color = colorsys.hsv_to_rgb(1,1,1)
>>> test_color
(1, 0.0, 0.0)
正規化されていない RGB タプルが必要な場合は、関数をラップする関数がありますcolorsys
。
def hsv2rgb(h,s,v):
return tuple(round(i * 255) for i in colorsys.hsv_to_rgb(h,s,v))
機能例
>>> hsv2rgb(0.5,0.5,0.5)
(64, 128, 128)