2014-01-31 24 views
1

用Python Matlibplot和im.show()显示图像,它们为什么不同?

im = Image.fromarray(noisyImage) 
im.show(noisyImage) 

之间与Python显示图像,差快速的问题,我得到这样的:

http://s30.postimg.org/xbkxly81t/other.png

然后,当我使用matplotlib我得到这个:

plt.imshow(noisyImage) 
plt.show() 

http://s30.postimg.org/64odx64ap/mtlibplt.png

请问有人能解释为什么,当它的图像相同时,只是显示方式不同而已?真的很困惑!颜色甚至来自matplotlib?

另外什么是在第一个图像的顶部的所有噪音?如果我不试图改变图像,那很好。谢谢

感谢您的任何帮助。

+0

看起来你正在绘制一个'jet'色彩地图。试试:'plt.imshow(noisyImage,cmap =“grey”')然后检查cols和rows的顺序是否正确。 – Mailerdaimon

回答

1

PIL的show是一种便利功能,它使用os.system来调用您的机器上的某个与操作系统相关的图像查看器。

你可以找出正在使用什么命令,通过这样来显示图像 :

In [37]: import ImageShow 

In [38]: [viewer.get_command_ex('file')[0] for viewer in ImageShow._viewers] 
Out[38]: ['display'] 

所以我的Unix机器上,PIL的show使用ImageMagick的display程序。

Matplotlib的plt.show功能使用,如tkGUI backendgtkpyqtwxpython绘制曲线。

+0

谢谢!使事情更清楚一点。虽然有时候我只是随机噪声或python崩溃。看到这里:http://s11.postimg.org/5tk6d1m2r/Poisson_Noise3.jpg所以不知道这是为什么。但是很多感谢解释,因为我不确定哪个最适合使用,或者如果显示的图像不正确。看起来它们都是以正确方式显示的“正确”。 – user2956523