为什么Python PIL不能在一个程序中显示两张图片

5
这是我的代码:

img = Image.open('data/img.jpg')
lb = Image.open('data/label.png')
img.show('img')
img.close()
lb.show('lb')
lb.close()

运行此程序后,第一张图片成功显示,但除非我注释掉与第一张图片相关的代码,否则第二张图片不会显示。这个问题的原因是什么?

它对我有效。 - Stop harming Monica
如果你用下面的代码替换第3至6行,就可以将图像临时拼接在一起并显示结果:Image.fromarray(np.hstack((np.array(img),np.array(lb)))).show() - Mark Setchell
@Goyo 你运行这个程序后,会打开两个窗口来显示两张图片吗? - coin cheung
是的。我猜这可能取决于用于显示图像的实际程序以及如何调用它。请注意,您可以使用“command”关键字自定义它。 - Stop harming Monica
1个回答

8
你可以使用多线程同时显示两个内容:
#!/usr/local/bin/python3

from PIL import Image
from threading import Thread

def display(im):
    im.show()

im1 = Image.open('1.jpg')
im2 = Image.open('2.jpg')
t1=Thread(target=display,args=(im1,))
t1.start()
t2=Thread(target=display,args=(im2,))
t2.start()

这里输入图片描述


或者您可以暂时将这些图像连接成一个:

#!/usr/local/bin/python3

from PIL import Image
import numpy as np

im1 = Image.open('1.jpg')
im2 = Image.open('2.jpg')

Image.fromarray(np.hstack((np.array(im1),np.array(im2)))).show()

enter image description here


1
从来没有想过连接,这使事情变得更容易了,谢谢! - gebbissimo
@M.HosseinRahimi 将较小的那个填充... https://dev59.com/a7Hma4cB1Zd3GeqPSN4g#54706194 - Mark Setchell

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接