[英]PIL: AttributeError: 'NoneType' object has no attribute '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.