im.getcolors()返回None

时间:2016-05-10 18:53:13

标签: python image-processing

我正在使用一个简单的代码,通过PIL的函数getcolors()将图像与桌面截图进行比较。当我打开图像时,它可以工作:

im = Image.open('sprites\Bowser\BowserOriginal.png')
current_sprite = im.getcolors() 
print current_sprite

然而,使用pyautogui.screenshot()和ImageGrab.grab()作为截图,我的代码没有返回。我尝试过使用RGB转换,如下所示:Cannot use im.getcolors

此外,即使我将截图保存为.png,它仍然没有返回。

i = pyautogui.screenshot('screenshot.png')
f = Image.open('screenshot.png')
im = f.convert('RGB')
search_image = im.getcolors()
print search_image

第一次发帖,非常感谢帮助。

2 个答案:

答案 0 :(得分:3)

相当古老的问题,但对于那些现在已经看到这个问题的人:

Image.getcolors()作为参数“ maxcolors –最大颜色数”。 (来自文档here)。

图像可以具有的最大颜色数,等于其包含的像素数。 例如,一张50 * 60px的图像最多可显示3,000种颜色。

要将其转换为代码,请尝试以下操作:

# Open the image.
img = Image.open("test.jpg")
# Set the maxcolors number to the image's pixels number.
colors = img.getcolors(img.size[0]*img.size[1])

答案 1 :(得分:0)

如果你检查文档,如果图像中的颜色数大于默认参数(设置为256),则getcolors返回None