平滑放大图像的程序[python]

时间:2015-03-06 02:35:10

标签: python

我正在尝试创建一个平滑放大图像的程序。这样做的方法通常是用一个平均值替换一个elnarged图像中的每个像素,它的邻居。我在def平均功能中做到了这一点。但是我收到了这个错误:

  

newPixel = average(originalPixel,(originalPixel -   1),(originalPixel + 1))TypeError:不支持的操作数类型 - :   'Pixel'和'int'

我的代码如下所示,oldPixel是从图片中获取的originalPixel:

from cImage import*
def average(oldPixel, neighbour1, neighbour2):
    newPixel = (neighbour1 + neighbour2 + oldPixel/3)
    return newPixel






def averagePhoto(image):
    mywin = ImageWin("image",1000,600)
    oldimage = FileImage("image.gif")
    oldimage.draw(mywin)

    width = oldimage.getWidth()
    height = oldimage.getHeight()
    newim = EmptyImage(width,height)

    for row in range(height):
        for col in range(width):
            originalPixel = oldimage.getPixel(col,row)
            newPixel = average(originalPixel,(originalPixel - 1),(originalPixel+1))
            newim.setPixel(col,row,newPixel)

    newim.setPosition(width+1,0)
    newim.draw(myimagewindow)
    myimagewindow.exitOnClick()

有人能弄明白问题是什么吗?

谢谢

1 个答案:

答案 0 :(得分:3)

除了:

originalPixel = oldimage.getPixel(col,row)

你需要:

rightNeignbor =  oldimage.getPixel(col+1,row)
leftNeignbor =  oldimage.getPixel(col-1,row)

我建议包括位于给定像素的北,东北,东,东南,南,西南,西和西北的像素。

然后你需要平均我假设的颜色值。

您需要平均所有值(第二个括号错位):

newPixel = (neighbour1 + neighbour2 + oldPixel) / 3

返回cImage文档,有一个红色,绿色,蓝色像素属性,您可能需要一次平均一个。平均时,除以浮点数并舍入为整数。