繁体   English   中英

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

[英]Python, AttributeError: 'NoneType' object has no attribute 'show'

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

原始图片如下所示:

a a b b - - - -

a b c d - - - -

a b a b - - - - 

输出的图片将是:

a a b b b b a a

a b c d d c b a

a b a b b a b a

我正在处理的代码如下:

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’对象有没有属性‘秀’”

我希望这个问题足够清楚。 谢谢。

可能您只是想做:

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

代替

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

您的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并将原始数组和翻转数组合并在一起,以提高应用程序的速度。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM