Python 从无色图片数据(PIL)中获取RGB值

Python 从无色图片数据(PIL)中获取RGB值,python,python-imaging-library,Python,Python Imaging Library,我需要知道,如果图像是无色的,是否有可能从它的(获取)数据中获取RGB值。我目前有一段代码如下(np=numpy): 这使我能够获取所有RGB值。它可以完美地处理彩色图片,但当它试图设置R[x]时,黑白图片会崩溃。错误: indexError: invalid index to scalar variable 此错误在行中抛出 R[x] = RGB[0] 您可以使用: img = Image.open(path) layeredimg = img.convert('RGB') 在转换为nu

我需要知道,如果图像是无色的,是否有可能从它的(获取)数据中获取RGB值。我目前有一段代码如下(np=numpy):

这使我能够获取所有RGB值。它可以完美地处理彩色图片,但当它试图设置R[x]时,黑白图片会崩溃。错误:

indexError: invalid index to scalar variable
此错误在行中抛出

R[x] = RGB[0]
您可以使用:

img = Image.open(path)
layeredimg = img.convert('RGB')
在转换为numpy数组之前执行此操作。你可以找到更多的信息(严格地说是枕头,一个PIL叉子)

如果您想有条件地执行此操作(即,如果您想对黑白和彩色图像使用相同的代码),您可以这样做:

img = Image.open(path)
if img.layers == 1:
    img = img.convert('RGB')

这管用!非常感谢。需要等待8分钟才能接受。因为您在中编辑了它。我对黑白和彩色都使用相同的代码,但它在没有条件的情况下工作(例如,如果您总是将图像转换为RGB,它就工作)。如果图像不是黑白的,我想你可以通过不处理来节省一些时间,但这很小,不是吗?很好的一点,img.convert()制作了一个副本,所以它不是完全免费的,但应该不是什么大问题。
img = Image.open(path)
if img.layers == 1:
    img = img.convert('RGB')