首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用PIL获取像素的RGB

使用PIL获取像素的RGB
EN

Stack Overflow用户
提问于 2012-06-16 23:32:25
回答 4查看 227.2K关注 0票数 107

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

代码语言:javascript
复制
im = Image.open("image.gif")
pix = im.load()
print(pix[1,1])

但是,它只输出一个数字(例如01),而不是三个数字(例如R、G、B的60,60,60 )。我想我对这个函数不太了解。我想要一些解释。

非常感谢。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-06-16 23:52:09

是的,这条路:

代码语言:javascript
复制
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)

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

另请参阅SO post:Python and PIL pixel values different for GIF and JPEG和此PIL Reference page,其中包含有关convert()函数的更多信息。

顺便说一下,您的代码可以很好地处理.jpg图像。

票数 177
EN

Stack Overflow用户

发布于 2016-07-08 04:11:32

转换图像的另一种方法是从调色板创建RGB索引。

代码语言:javascript
复制
from PIL import Image

def chunk(seq, size, groupByList=True):
    """Returns list of lists/tuples broken up by size input"""
    func = tuple
    if groupByList:
        func = list
    return [func(seq[i:i + size]) for i in range(0, len(seq), size)]


def getPaletteInRgb(img):
    """
    Returns list of RGB tuples found in the image palette
    :type img: Image.Image
    :rtype: list[tuple]
    """
    assert img.mode == 'P', "image should be palette mode"
    pal = img.getpalette()
    colors = chunk(pal, 3, False)
    return colors

# Usage
im = Image.open("image.gif")
pal = getPalletteInRgb(im)
票数 2
EN

Stack Overflow用户

发布于 2016-07-24 17:02:55

虽然不是PIL,但imageio.imread可能仍然很有趣:

代码语言:javascript
复制
import imageio
im = scipy.misc.imread('um_000000.png', flatten=False, mode='RGB')
im = imageio.imread('Figure_1.png', pilmode='RGB')
print(im.shape)

给出

代码语言:javascript
复制
(480, 640, 3)

所以它是(高度,宽度,通道)。因此位置(x, y)处的像素是

代码语言:javascript
复制
color = tuple(im[y][x])
r, g, b = color

过时了

scipy.misc.imreaddeprecated in SciPy 1.0.0 (谢谢你的提醒,fbahr!)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11064786

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档