所以我正在做一个关于在python中使用图像对象的家庭作业。我正在使用python 3.4.1进行此分配。我觉得我已经完成了所有工作,但它不想正常工作。基本上,我试图让它看起来像我附加的图片,但它只显示为1条红线,并且在白色背景上显示为1条红线从上到下。 任何帮助将不胜感激。
import cImage as image
width = 500
height = 500
img = image.EmptyImage(width, height)
win = image.ImageWin("Exercise 3", width, height)
img.draw(win)
for row in range(height):
for col in range(width):
p = img.getPixel(col, row)
if row == 0 or col == 0:
p = image.Pixel(255, 0, 0)
else:
Sum = 0
temppixel = img.getPixel(col-1, row)
if temppixel.getRed() == 255:
Sum = Sum + 1
elif temppixel.getBlue() == 255:
Sum = Sum + 2
temppixel = img.getPixel(col-1, row-1)
if temppixel.getRed() == 255:
Sum = Sum + 1
elif temppixel.getBlue() == 255:
Sum = Sum + 2
temppixel = img.getPixel(col, row-1)
if temppixel.getRed() == 255:
Sum = Sum + 1
elif temppixel.getBlue() == 255:
Sum = Sum + 2
if Sum % 3 == 1:
p = image.Pixel(255, 0, 0)
elif Sum % 3 == 2:
p = image.Pixel(0, 0, 255)
else:
p = image.Pixel(255, 255, 255)
img.setPixel(col, row, p)
img.draw(win)
img.draw(win)
# uncomment this to save the image as a file
#img.saveTk("gradient.gif")
win.exitonclick()
答案 0 :(得分:0)
不幸的是,您的代码完全按照您的编写方式执行。让我们先命名三个if ... elif
条件1,2和3:
row = 0
表示条件2和3使用无效坐标(因为row-1
)。所以这里只有条件,它总是会增加1 sum
,这意味着它会添加一个新的红色像素。 sum = 1
,这意味着新的红色像素。你有自上而下的红线row = 1
和col = 1
开始,所有邻居都是红色的,这会导致新的白色像素。不幸的是,白色确实包含一些红色,所以它总是符合相同的条件,并且你有白色背景。我还没有找到这种方法的完整算法来构建Sierpinski地毯,所以我无法真正纠正它。但是你应该特别注意这些边缘情况:如果你在第一行或第一行,应该是三个邻居?