[英]How to get set of colours in an image using python PIL
使用python的PIL模块导入图像后,我想获得图像中的一组颜色作为rgb元组的列表。
如果我事先知道只有2种颜色并且图像会非常小,可能是20x20像素,该怎么办? 但是,我将在很多图像上运行此算法。 遍历所有像素直到看到2种独特的颜色会更有效吗? 因为我知道python中的循环非常慢。
首先,让我们做一个图像。 我将使用ImageMagick使用洋红色书写来制作蓝色背景:
convert -size 300x120 -background blue -fill magenta -gravity center -font AppleChancery label:"StackOverflow" PNG24:image.png
如您所见,我只指定了两种颜色-洋红色和蓝色,但PNG图像实际上包含200多种颜色,而JPEG图像则包含2,370种不同的颜色!
因此,如果我想获得两种主要颜色,则可以这样做:
from PIL import Image
# Open the image
im = Image.open('image.png')
# Quantize down to 2 colour palettised image using *"Fast Octree"* method:
q = im.quantize(colors=2,method=2)
# Now look at the first 2 colours, each 3 RGB entries in the palette:
print(q.getpalette()[:6])
样品结果
[0, 0, 255, 247, 0, 255]
如果将其写为2个RGB三元组,则会得到:
RGB 0/0/255 = blue
RGB 247/0/255 = magenta
对于很多图像,最好的方法是使用多线程或多处理,如果您希望它们快完成!
关键字 :Python,PIL,枕头,图像,图像处理,八叉树,快速八叉树,量化,量化,调色板,调色,调色,减少颜色,减少颜色,抗锯齿,字体,独特,独特颜色,独特颜色。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.