2014-01-31 60 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