Python 在图像中查找特定的rgb值并进行更改

Python 在图像中查找特定的rgb值并进行更改,python,python-3.x,python-imaging-library,Python,Python 3.x,Python Imaging Library,我有一张图像,上面使用了quantize()函数(PIL) def抖动(im): 颜色调色板=((255,255,255), (193, 193, 193), (239, 19, 11), (255, 113, 0), (255, 228, 0), (0, 204, 0), (0, 178, 255), (35, 31, 211), (163, 0, 186), (211, 124, 170), (160, 82, 45), (0, 0, 0), (76, 76, 76), (116, 11,

我有一张图像,上面使用了quantize()函数(PIL)

def抖动(im):
颜色调色板=((255,255,255),
(193, 193, 193),
(239, 19, 11),
(255, 113, 0),
(255, 228, 0),
(0, 204, 0),
(0, 178, 255),
(35, 31, 211),
(163, 0, 186),
(211, 124, 170),
(160, 82, 45),
(0, 0, 0),
(76, 76, 76),
(116, 11, 7),
(194, 56, 0),
(232, 162, 0),
(0, 85, 16),
(0, 86, 158),
(14, 8, 101),
(85, 0, 105),
(167, 85, 116),
(99, 48, 13))
im=im.convert('RGB')
颜色调色板=列表(总和(颜色调色板,())*12
颜色调色板=颜色调色板[:768]
palimage=Image.new('P',(im.width,im.height))
palimage.putplate(颜色调色板)
抖动im=im.quantize(调色板=palimage)
回程抖动
我现在想把值改成0,1,2。。。21所以更容易使用。我试过这个:

width,height=im.size
im=np.数组(im)
对于范围内的x(宽度):
对于范围内的y(高度):
对于范围内的i(len(调色板)):
如果im[x][y]==all(调色板[i]):
im[x][y]=i

。。但它不起作用。

看看这里,这与我的问题无关。quantize()正在工作。但是我想要从0到21的值(调色板中的颜色数),而不是每个像素的rgb值。也许你可以解释一下你实际上想做得更好一些。我只在调色板中制作了22幅图像。现在我想要一个不带rgb颜色的数组,我想要一个带数字的数组,其中0是(255,255,255)等等。因为它更容易使用。你能详细说明它是如何工作的吗?只要看一眼,就会发现在numpy数组中从RGB变为标量的问题。看看这里,这与我的问题无关。quantize()正在工作。但是我想要从0到21的值(调色板中的颜色数),而不是每个像素的rgb值。也许你可以解释一下你实际上想做得更好一些。我只在调色板中制作了22幅图像。现在我想要一个不带rgb颜色的数组,我想要一个带数字的数组,其中0是(255,255,255)等等。因为它更容易使用。你能详细说明它是如何工作的吗?只要看一眼,就会发现在numpy数组中从RGB变为标量的问题。