【问题标题】:display two png images simultaneously using pylab使用pylab同时显示两个png图像
【发布时间】:2012-05-09 13:14:18
【问题描述】:

我想打开两个 png 图像文件并将它们并排显示以进行视觉比较。 我有这个代码用于打开一个 png 文件(我从 stackoverflow.com 上的 unutbu 获得):

import numpy as np
import pylab
import matplotlib.cm as cm
import Image

fname='file.png'
image=Image.open(fname).convert("L")
arr=np.asarray(image)
pylab.imshow(arr,cmap=cm.Greys_r)
pylab.title('title')
pylab.show()

有没有办法修改此代码以打开并并排显示 2 个 png 文件及其各自的标题?

【问题讨论】:

    标签: python png matplotlib grayscale


    【解决方案1】:

    这是一个示例,其中一个图中包含两个子图。

    import pylab
    
    coordinates = range(5)
    x = [1,4,5,6,2]
    y = [4,6,8,9,2]
    
    fig = pylab.figure()
    
    fig_1 = fig.add_subplot(2,1,1)
    
    fig_1.bar(coordinates,x)
    
    fig_2 = fig.add_subplot(2,1,2)
    
    fig_2.bar(coordinates,y)
    
    pylab.show()
    

    我认为你只需要将它与你已有的结合起来。

    【讨论】:

      【解决方案2】:

      以下对我有用(您可以注释/取消注释代码中的行以更改“复合”图像的布局):

      #!/usr/bin/env python
      #-*- coding:utf-8 -*-
      
      import numpy as np
      import pylab
      import matplotlib.cm as cm
      import Image
      
      f = pylab.figure()
      for n, fname in enumerate(('1.png', '2.png')):
          image=Image.open(fname).convert("L")
          arr=np.asarray(image)
          f.add_subplot(2, 1, n)  # this line outputs images on top of each other
          # f.add_subplot(1, 2, n)  # this line outputs images side-by-side
          pylab.imshow(arr,cmap=cm.Greys_r)
      pylab.title('Double image')
      pylab.show()
      

      编辑:截图:

      【讨论】:

      • 如果您添加两个以上的图像,这不会导致“索引超出范围”错误吗?
      • 最新的matplotlib,最好使用从1开始的索引。见the offical doc
      • 与 matplotlib.pyplot 相同,只需使用 f = matplotlib.pyplot.figure()
      【解决方案3】:

      将上面的答案结合到我现在使用的一些代码中:

      `

      import pylab as P
      import numpy as N
      import Image
      
      fnames = ['1.png', '2.png', '3.png']
      
      fig = P.figure()
      for i,fname in enumerate(fnames):
          fig.add_subplot(number_images, 1, i+1)
          P.imshow(N.asarray(Image.open(fname).convert("L")))
      P.show()
      

      `

      【讨论】:

        猜你喜欢
        • 2015-03-17
        • 1970-01-01
        • 2022-07-28
        • 2019-11-15
        • 2014-04-29
        • 1970-01-01
        • 1970-01-01
        • 2020-11-09
        • 1970-01-01
        相关资源
        最近更新 更多