Python,AttributeError:“NoneType”对象没有属性“show”

2024-05-29 09:47:00 发布

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

目前我正在尝试复制一张在python上是一半的图片并使其对称。其中图片包含整个像素数的一半。 左边是原件。我想从左到右复制这些像素,使整个图片对称

原始图片如下所示:

a a b b - - - -

a b c d - - - -

a b a b - - - - 

输出图片将是:

^{pr2}$

我正在处理的代码如下:

from csmedia import *

def symmetry(img):
    output_image = None

     w, h = img.size()
     for y in range(h):
         for x in range(w):
         os = img.get(x, y)
         img.set(w - x - 1, y, os)
     return output_image

if __ name__ == __main__:
     img = load_picture('img/half_star.png')
     image = symmetry(img)
     image.show

但是,当我运行代码时,它会给我“AttributeError:'NoneType'对象没有属性'show'”

我希望问题足够清楚。 谢谢您。在


Tags: 代码inimageimgforoutputosshow
2条回答

您的symmetry函数不是生成输出图像,而是修改原始图像。你可以这样修改它:

def symmetry(img):
    w, h = img.size()

    output_image = Image(width=2*w, height=h)  # Or whatever method your library provides to create an empty image object

    for y in range(h):
        for x in range(w):
            original_pixel = img.get(x, y)
            output_image.set(x, y, original_pixel)  # Copying original image
            output_image.set(w - x - 1, y, original_pixel)  # mirroring original image

    return output_image

请注意,如果您使用OpenCV(最常用的图像处理库),python的for循环并不是完成这项工作的最佳工具。您可以使用numpy.flip并将原始数组和翻转数组合并在一起,以提高应用程序的速度。在

也许你只是想:

output_image.set(w - x - 1, y, os)

而不是

^{pr2}$

相关问题 更多 >

    热门问题