【问题标题】:matplotlib display images from left to right to bottom (matlab montage)matplotlib 从左到右到下显示图像(matlab montage)
【发布时间】:2016-06-27 15:01:34
【问题描述】:

有没有一种方法可以显示具有一个功能的图像列表?在matlab中有蒙太奇。目前,如果我 for loop 和 imshow matplotlib 从上到下显示图像。当没有空间时,我希望它从左到右然后到底部。我的代码在下面,但它当然是愚蠢的代码。

import numpy as np

plot_image = image_list[1]
for i in range(20):
    plot_image = np.concatenate((plot_image, image_list[i+1]), axis=1)

plt.figure(figsize = (15,15))
plt.imshow(plot_image, cmap = 'gray');

有没有像 montage(list_of_images) 这样的函数,或者甚至更好的函数,不需要像 smarter_imshow(list_of_images_with_unequal_resolution) 那样接收相同大小的图像

【问题讨论】:

  • 有人帮忙,谢谢
  • 如果有人有话要说,请不要提出问题。

标签: python matlab numpy matplotlib montage


【解决方案1】:

即将发布的 scikit-image 版本有一个适用于彩色图像的蒙太奇实现:

https://github.com/scikit-image/scikit-image/blob/master/skimage/util/_montage.py

您必须通过multichannel=True 获取彩色图像。

等待该版本的发布,该文件很容易修改(只需修复顶部的导入),因此它可以独立运行。

【讨论】:

    【解决方案2】:

    你可以用 ImageGrid 类做这样的事情。

    这是改编自上述文档:

    import matplotlib.pyplot as plt
    from mpl_toolkits.axes_grid1 import ImageGrid
    import numpy as np
    
    fig = plt.figure(1)
    grid = ImageGrid(fig, 111,  # similar to subplot(111)
                     nrows_ncols=(2, 2),  # creates 2x2 grid of axes
                     axes_pad=0,  # pad between axes in inch.
                     )
    
    for i in range(4):
        grid[i].imshow(np.random.random((10, 10)))  # The AxesGrid object work as a list of axes.
        grid[i].axis('off')
        grid[i].set_xticks([])
        grid[i].set_yticks([])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-12-16
      • 1970-01-01
      • 2016-07-16
      • 1970-01-01
      • 2014-12-31
      • 2015-02-09
      • 2013-06-21
      相关资源
      最近更新 更多