使用PIL量化python中某种颜色的像素数量时出现问题

时间:2019-06-13 14:49:21

标签: python image python-imaging-library

我想在屏幕上打印给定文件夹的所有图像中红色和绿色像素的数量(下面附有代码)。

但是,它似乎一遍又一遍地迭代,从而产生以下输出:红色= 675,绿色= 1036,重复了200次以上。

我哪里出错了? (P.S.我是编码的新手)

import os 
inputdir = r'C:\Users\XXXX\Desktop\Processed_Frames\LMT_T3_2mice_nothing - Copy\2dig'

from PIL import Image


for file in os.listdir(inputdir):
    im = Image.open('000013.png')
red = 0
green = 0

for pixel in im.getdata():
    if pixel == (255, 0, 0, 255): # if your image is RGB (if RGBA, (0, 0, 0, 255) or so
        red += 1
    if pixel == (000, 128, 000, 255): # if your image is RGB (if RGBA, (0, 0, 0, 255) or so
        green += 1
    print('red=' + str(red)+', green='+str(green))
end

1 个答案:

答案 0 :(得分:0)

缩进在python中很重要!您使打印命令出现在每个像素之后,而不是出现在每个图像之后。您也不需要在python中的for循环后使用“ end”。此代码将打印每张图像的红色和绿色像素总数:

import os 
inputdir = r'C:\Users\XXXX\Desktop\Processed_Frames\LMT_T3_2mice_nothing - Copy\2dig'

from PIL import Image


for file in os.listdir(inputdir):
    im = Image.open('000013.png')
    red = 0
    green = 0

    for pixel in im.getdata():
        if pixel == (255, 0, 0, 255): # if your image is RGB (if RGBA, (0, 0, 0, 255) or so
            red += 1
        if pixel == (000, 128, 000, 255): # if your image is RGB (if RGBA, (0, 0, 0, 255) or so
            green += 1
    print('red=' + str(red)+', green='+str(green))