2015-03-02 97 views
3

我正在使用python和matplotlib處理一些圖像處理算法。我想使用子圖(例如,輸出圖像旁邊的原始圖像)在圖中顯示原始圖像和輸出圖像。輸出圖像的大小與原始圖像的大小不同。我希望副圖顯示圖像的實際尺寸(或統一縮放),以便我可以比較「蘋果與蘋果」。我目前使用:在matplotlib子圖中顯示具有實際尺寸的不同圖像

plt.figure() 
plt.subplot(2,1,1) 
plt.imshow(originalImage) 
plt.subplot(2,1,2) 
plt.imshow(outputImage) 
plt.show() 

結果是我得到的插曲,但兩個圖像(縮放,使得它們具有相同的尺寸儘管在輸出圖像上的軸比的軸不同輸入圖像)。只是要明確:如果輸入圖像是512x512,輸出圖像是1024x1024,那麼兩幅圖像都顯示爲相同大小。

有沒有辦法迫使matplotlib以各自的實際尺寸顯示圖像(最好的解決方案,以便matplotlib的動態重新縮放不會影響顯示的圖像),或者縮放圖像以使它們以大小成比例顯示到他們的實際大小?

+1

我認爲'figimage'可能對你有用......這個問題可能是[this](http://stackoverflow.com/questions/25960755/how-to-set-imshow-scale)問題的重複。 .. – Ajean 2015-03-02 20:10:13

+0

謝謝。我會看看。是的,看起來像一個副本帖子。猜猜我在搜索時沒有看到那個。謝謝! – Doov 2015-03-03 18:08:46

回答

4

這是你正在尋找的答案:從here改編

def display_image_in_actual_size(im_path): 

    dpi = 80 
    im_data = plt.imread(im_path) 
    height, width, depth = im_data.shape 

    # What size does the figure need to be in inches to fit the image? 
    figsize = width/float(dpi), height/float(dpi) 

    # Create a figure of the right size with one axes that takes up the full figure 
    fig = plt.figure(figsize=figsize) 
    ax = fig.add_axes([0, 0, 1, 1]) 

    # Hide spines, ticks, etc. 
    ax.axis('off') 

    # Display the image. 
    ax.imshow(im_data, cmap='gray') 

    plt.show() 

display_image_in_actual_size("./your_image.jpg")