HSVからRGBへのカラー変換 質問する

HSVからRGBへのカラー変換 質問する

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)

おすすめ記事