无法获取分形图像

2024-09-28 20:50:23 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我正在做一个关于在python中使用图像对象的家庭作业。我使用python3.4.1来完成这个任务。我觉得我什么都做了,但它不想正常工作。基本上,我想让它看起来像我所附的图片,但它只显示为一条红线,一条红线从上到下的白色背景。 任何帮助都将不胜感激

附加图像: http://imgur.com/TMho41w

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

Tags: imageimgifcolwidthwinrowsum
1条回答
网友
1楼 · 发布于 2024-09-28 20:50:23

不幸的是,您的代码与您编写的代码完全相同。让我们把前三个if ... elif条件命名为1、2和3:

  1. 第一个像素设置为红色
  2. 然后我们继续通过第一行,所以row = 0,这意味着条件2和3使用了无效的坐标(因为row-1)。所以这里只有一个条件,它总是增加1sum,这意味着它将添加一个新的红色像素
  3. 所以你现在有了你的第一条红线
  4. 对于第一列,从第二行开始:条件1&;2使用了无效的坐标。条件3总是返回sum = 1,这意味着一个新的红色像素。从上到下都有红线
  5. 然后从row = 1col = 1开始,所有的邻居都是红色的,这就产生了一个新的白色像素。不幸的是,白色确实包含一些红色,所以它总是满足同样的条件,你有你的白色背景

我还没有找到完整的算法,这种方法来建立一个Sierpinski地毯,所以我不能真正纠正它。但是在这种情况下,你应该格外小心:如果你在第一行或第一排,三个邻居应该是什么

相关问题 更多 >