2017-01-13 65 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 
相關問題