簡體   English   中英

類型錯誤:需要一個整數

[英]TypeError: an integer is required

Python 初學者,我一直在嘗試按如下方式更改圖像的像素值。 我收到一條錯誤消息,顯示“TypeError: an integer is required”在最后一行但如何解決? 這是我的代碼:

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()

根據:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM