2013-03-04 143 views
0

我得到没有足够的参数来格式化字符串,有什么建议吗?它在else f.write行(52)。这是取平均像素值并将其替换为第二张图像。正如你可以看到该文件读取这两个图像并写入它们。在写入过程中,我收到一个错误,说没有足够的参数来格式化字符串。Python图像处理

def main(): 
f = open("BoardHappy.ppm","r") 
lines = f.readlines() 
kinds = lines[0] 
size=lines[1].split() 
width=int(size[0]) 
height=int(size[1]) 
depth = int(lines[2]) 

red=[] 
green=[] 
blue=[] 
for i in range(3, len(lines)): 
    temp = lines[i].split() 
    for j in range(0, len(temp) ,3): 
     red.append(int(temp[j])) 
     green.append(int(temp[j+1])) 
     blue.append(int(temp[j+2])) 
f.close() 

f = open("Godzilla.ppm","r") 
lines = f.readlines() 
kinds = lines[0] 
size=lines[1].split() 
width=int(size[0]) 
height=int(size[1]) 
depth = int(lines[2]) 

red1=[] 
green1=[] 
blue1=[] 
for i in range(3, len(lines)): 
    temp = lines[i].split() 
    for j in range(0, len(temp), 3): 
     red1.append(int(temp[j])) 
     green1.append(int(temp[j+1])) 
     blue1.append(int(temp[j+2])) 
f.close() 


f = open("lab5.ppm","w") 
f.write("P3 \n") 
width=720 
height=540 
f.write("%d %d \n"%(width,height)) 
f.write("255 \n") 
for i in range(width*height): 
    new = (red[i]+green[i]+blue[i])/3.0 
    if new >=100: 
     f.write("%d %d %d/n"% red[i], green[i],blue[i]) 
    else: 
     f.write("%d %d %d/n"% red1[i], green1[i], blue1[i]) 

f.close() 

main() 

回答

1

您需要括号:

f.write("%d %d %d/n"% (red[i], green[i],blue[i])) 
+0

哇,我觉得愚蠢。谢谢 – user2105564 2013-03-04 01:24:29

+0

我很确定那些是括号...... – ApproachingDarknessFish 2013-03-04 01:37:06