我愿意使用色彩图获取 python 中图像中存在的所有颜色。在文档中他们没有具体说明这一点。这是我的代码:
import colorgram as cg
color_list = cg.extract("dot-img.jpg", 60)
color_palette = []
for count in range(len(color_list)):
rgb = color_list[count]
color = rgb.rgb
color_palette.append(color)
我在 cg.extract 第二个参数中写了 60。但我没有 60 种颜色。这是否意味着 colorgram 返回了图像中存在的所有颜色?
只需为
number_of_colors
变量指定一个尽可能大的数字即可。系统会正确处理。
import colorgram as cg
color_list = cg.extract("dot-img.jpg", 2 ** 32)
color_palette = []
for count in range(len(color_list)):
rgb = color_list[count]
color = rgb.rgb
color_palette.append(color)
源代码在
colorgram
:
def get_colors(samples, used, number_of_colors):
pixels = 0
colors = []
number_of_colors = min(number_of_colors, len(used))
for count, index in used[:number_of_colors]:
pixels += count
color = Color(
samples[index] // count,
samples[index + 1] // count,
samples[index + 2] // count,
count
)
colors.append(color)
for color in colors:
color.proportion /= pixels
return colors
您可以在给定用户回答后执行此操作,但它不会工作,因为您的格式是“RGB”。如果你想使用那种颜色,你应该转换它。例如:
import colorgram as cg
import turtle as t
colors = cg.extract('pink_image.jpg', 25)
rgb_colors = []
t.speed(100)
screen = t.Screen()
for coloring in colors:
r = coloring.rgb.r
g = coloring.rgb.g
b = coloring.rgb.b
new_color = (r, g, b)
rgb_colors.append(new_color)
print(rgb_colors)
查看输出位于您的输出之后的上方。当您查看自己的代码时,您可以看到这种输出:
>> [Rgb(r=245, g=243, b=238),Rgb(r=247, g=242, b=244)]
你不能这样使用它。你应该像我的代码一样转换它。希望你能理解。
要获取可用的 RGB 代码列表,您需要使用以下代码:
import colorgram as cg
color_list = cg.extract("image.jpg", 10)
color_palette = []
for i in range(len(color_list)):
r = color_list[i].rgb.r
g = color_list[i].rgb.g
b = color_list[i].rgb.b
new_color = (r, g, b)
color_palette.append(new_color)
print(color_palette)
Colorgram 从白色背景的图像中挑选白色和灰色。为了避免这种情况,我使用了简单的 color_check :D
import colorgram as cg
color_list = cg.extract("image.jpg", 30)
color_palette = []
# from stackoverflow
for i in range(len(color_list)):
r = color_list[i].rgb.r
g = color_list[i].rgb.g
b = color_list[i].rgb.b
new_color = (r, g, b)
# Remove colours close to RGB 255 to exclude background grays
colorcheck = r+g+b
# set sensitivity 600-700
if colorcheck < 700:
color_palette.append(new_color)
print(color_palette)