我想迭代PNG图像(我用imagemagick创建)中给定颜色的所有像素。我可以处理迭代部分,但该图像使用调色板,因此我需要获取给定颜色的调色板索引,在我的例子中为白色。通常这应该与函数ImagePalette.getcolor()
一起工作,但这告诉我调色板处于原始模式,我不知道如何禁用。我所做的如下,但必须有一个更简单的方法
import sys
from PIL import Image
import numpy as np
image = Image.open( sys.argv[1] )
width, height = image.size
# image.palette.getcolor( (255,255,255) ) # gives ValueError: palette contains raw palette data
palette = image.getpalette() # a list
palette = np.reshape( palette, (-1, 3) )
#rows255, _cols255 = np.where( palette == (255,255,255) ) # gives the same as below - apparently or'ing
rows255, _cols255 = np.where( palette == 255 )
whites = []
count = 1
prev = -1
for r in rows255:
if r==prev:
count += 1
else:
count = 1
if count==3:
whites.append( prev )
prev = r
print(whites)
所以我对直接使用pil或者正确地使用numpy.where()
来处理元组感兴趣
使用调色板的每个图像的情况都应该相同,但这是我的一个文件:https://imgur.com/ojul9mf
我不确定你的问题到底是什么,也不确定你想做什么。我认为您需要获得与白色对应的调色板项的索引
这将告诉您哪些调色板条目是白色的,即第一个和最后一个:
或者你想要这个,它告诉你同样的事情,即第一个和最后一个条目是白色的:
相关问题 更多 >
编程相关推荐