大家好,在我的蛇游戏程序中,当用户选择" Rainbow"时,我需要多次生成随机颜色。主题。在线查看后,我发现了这个:
Generating a Random Hex Color in Python
得票最多的答案给出了
的解决方案import random
r = lambda: random.randint(0,255)
print('#%02X%02X%02X' % (r(),r(),r()))
然而,这个程序也会产生非常暗淡的颜色;例如深棕色,有时甚至是黑色。如您所见,其中一些颜色与rainbow-y主题不匹配。
你如何改变上面的代码,以便你得到鲜艳的颜色,如亮橙色,粉红色,红色,蓝色等,你就明白了。一个假设的解决方案是增加randint r的最小值,但这使得所有颜色都非常白。 :'(
Plz,PLZ,PLZ,非常感谢帮助。
谢谢你们!
答案 0 :(得分:8)
创建随机HLS颜色(使用.5左右的数字作为"级别"参数和数字高于.5作为"饱和度"参数)并将它们转换为RGB:
import random
import colorsys
h,s,l = random.random(), 0.5 + random.random()/2.0, 0.4 + random.random()/5.0
r,g,b = [int(256*i) for i in colorsys.hls_to_rgb(h,l,s)]
这将确保您始终拥有高度饱和,明亮的色彩。
答案 1 :(得分:1)
为什么不将所有喜欢的颜色的十六进制代码放在列表中,并使用import Data.Lazy (Lazy, defer)
newtype User = User
{ name :: String
, organization :: Lazy Organization
}
newtype Organization = Organization
{ name :: String
, users :: Array User
}
fed :: Organization
fed =
Organization
{ name: "Federal Reserve"
, users:
[ User { name: "Pamela", organization: defer \_ -> fed }
, User { name: "Jillian", organization: defer \_ -> fed }
]
}
从该列表中选择一个随机项?我现在使用颜色名称而不是十六进制代码,但是例如:
random.choices()
答案 2 :(得分:0)
如果以较高的数字开始随机播放,则颜色会变浅,例如:
import random
def random_color():
rand = lambda: random.randint(100, 255)
return '#%02X%02X%02X' % (rand(), rand(), rand())
答案 3 :(得分:0)
尝试这段代码:
import colorsys
import cv2
import numpy as np
import random
#generates random colors in semi rgb format
def create_blank(width, height, rgb_color=(0, 0, 0)):
"""Create new image(numpy array) filled with certain color in RGB"""
# Create black blank image
image = np.zeros((height, width, 3), np.uint8)
# Since OpenCV uses BGR, convert the color first
color = tuple(reversed(rgb_color))
# Fill image with color
image[:] = color
return image
def random_colors(N, bright=True):
"""
Generate random colors.
To get visually distinct colors, generate them in HSV space then
convert to RGB.
"""
brightness = 1.0 if bright else 0.7
hsv = [(i / N, 1, brightness) for i in range(N)]
colors = list(map(lambda c: colorsys.hsv_to_rgb(*c), hsv))
random.shuffle(colors)
return colors
colors=random_colors(100)
for color in colors:
r,g,b=color
r=round(r*255)
g=round(g*255)
b=round(b*255)
image = create_blank(width1, height1, rgb_color=(r,g,b))
cv2.imwrite('path/to/folder'+str(r)+str(g)+str(b)+'.jpg', image)