如何使用python PIL

时间:2019-06-23 10:01:28

标签: python image computer-vision python-imaging-library

使用python的PIL模块导入图像后,我想获得图像中的一组颜色作为rgb元组的列表。

如果我事先知道只有2种颜色并且图像将非常小,也许20x20像素,该怎么办?但是,我将在很多图像上运行此算法。遍历所有像素直到看到2种独特的颜色会更有效吗?因为我知道python中的循环非常慢。

1 个答案:

答案 0 :(得分:2)

首先,让我们制作一张图像。我将只使用 ImageMagick 使洋红色文字变成蓝色背景:

convert -size 300x120 -background blue -fill magenta -gravity center -font AppleChancery label:"StackOverflow" PNG24:image.png

enter image description here

如您所见,我仅指定了两种颜色-洋红色和蓝色,但是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,Pillow,图像,图像处理,八叉树,快速八叉树,量化,量化,调色板,变色,变色,减少颜色,减少颜色,抗锯齿,字体,独特,独特的颜色,独特的颜色。