2017-01-13 61 views
-1

初学者到Python,我一直在试图改变图像的像素值,如下所示。我一直得到一个错误,说'类型错误:一个整数是必需的'在最后一行 我该如何解决这个问题? 这是我的代码:TypeError:需要整数

from PIL import Image 
img = Image.open(r'...') 
pix = img.load() 
def quantf(pval): 
    if pval>=0 and pval<0.25: 
     pval=0 
    elif pval>=0.25 and pval<0.5: 
     pval=0.25 
    elif pval>=0.5 and pval<0.75: 
     pval=0.5 
    elif pval>=0.75 and pval<1: 
     pval=0.75 
    elif pval==1: 
     pval=1 
for i in range (0,31): 
    for j in range (0,31): 
     pix[i,j]=quantf(pix[i,j]) 
img.show() 

回答

0

据:

http://pillow.readthedocs.io/en/3.4.x/reference/PixelAccess.html#example

执行图像负荷后的每个像素是使用多波段图像时一个元组,否则它是一个单独的值:

from PIL import Image 
im = Image.open('hopper.jpg') 
px = im.load() 
print (px[4,4]) 

打印:

(23, 24, 68) 

0.23 

您需要调整您的quantf(pval)功能,以解释这个问题,以及确保quantf(pval)实际返回的值。

例如:

def quantf(pval): 
    if pval[0]>=0 and pval[0]<64: 
     pval=(0, pval[1], pval[2]) 
    elif pval[0]>=64 and pval[0]<128: 
     pval=(64, pval[1], pval[2]) 
    elif pval[0]>=128 and pval[0]<192: 
     pval=(128, pval[1], pval[2]) 
    elif pval[0]>=192 and pval[0]<256: 
     pval=(192, pval[1], pval[2]) 
    return pval 

def quantf(pval): 
    if pval>=0 and pval<0.25: 
     pval=0 
    elif pval>=0.25 and pval<0.5: 
     pval=0.25 
    elif pval>=0.5 and pval<0.75: 
     pval=0.5 
    elif pval>=0.75 and pval<1: 
     pval=0.75 
    elif pval==1: 
     pval=1 
    return pval 
相关问题