使用PIL获取像素的RGB

Ger*_*inZ 83 python rgb image pixel python-imaging-library

是否可以使用PIL获得像素的RGB颜色?我正在使用此代码:

im = Image.open("image.gif")
pix = im.load()
print(pix[1,1])
Run Code Online (Sandbox Code Playgroud)

但是,它仅输出一个数字(例如01)而不是三个数字(例如,60,60,60对于R,G,B).我想我不了解这个功能.我喜欢一些解释.

非常感谢.

Lev*_*von 134

是的,这样:

im = Image.open('image.gif')
rgb_im = im.convert('RGB')
r, g, b = rgb_im.getpixel((1, 1))

print(r, g, b)
(65, 100, 137)
Run Code Online (Sandbox Code Playgroud)

您之前获得单个值的原因pix[1, 1]是因为GIF像素引用GIF调色板中的256个值之一.

另请参阅此SO帖子:GIF和JPEG的Python和PIL像素值不同,此PIL参考页面 包含有关该convert()功能的更多信息.

顺便说一下,你的代码可以很好地用于.jpg图像.

  • 这可以在计算机屏幕上完成,而不仅仅是图像文件吗? (2认同)
  • @NimaBavari 它是基于 0 的。 (2认同)
  • 它也适用于png文件. (2认同)

小智 9

使用 numpy :

im = Image.open('image.gif')
im_matrix = np.array(im)
print(im_matrix[0][0])
Run Code Online (Sandbox Code Playgroud)

给出位置 (0,0) 像素的 RGB 向量