【问题标题】:Using plt.imshow() to display multiple images使用 plt.imshow() 显示多张图片
【发布时间】:2016-12-18 17:12:19
【问题描述】:

如何使用matlib函数plt.imshow(image)显示多张图片?

例如我的代码如下:

for file in images:
    process(file)

def process(filename):
    image = mpimg.imread(filename)
    <something gets done here>
    plt.imshow(image)

我的结果表明,只有最后处理的图像有效地覆盖了其他图像

【问题讨论】:

标签: python matplotlib


【解决方案1】:

您可以使用以下方法设置框架以显示多个图像:

import matplotlib.pyplot as plt
import matplotlib.image as mpimg

def process(filename: str=None) -> None:
    """
    View multiple images stored in files, stacking vertically

    Arguments:
        filename: str - path to filename containing image
    """
    image = mpimg.imread(filename)
    # <something gets done here>
    plt.figure()
    plt.imshow(image)

for file in images:
    process(file)

这将垂直堆叠图像

【讨论】:

    【解决方案2】:

    要显示多个图像,请使用 subplot()

    plt.figure()
    
    #subplot(r,c) provide the no. of rows and columns
    f, axarr = plt.subplots(4,1) 
    
    # use the created array to output your multiple images. In this case I have stacked 4 images vertically
    axarr[0].imshow(v_slice[0])
    axarr[1].imshow(v_slice[1])
    axarr[2].imshow(v_slice[2])
    axarr[3].imshow(v_slice[3])
    

    【讨论】:

    • 这里的v_slice 是什么? @AadharBhatt
    • @WhyMeasureTheory 它代表垂直切片,因为我们使用的是 4 个垂直切片的图像。
    【解决方案3】:

    首先,将文件中的图像加载到 numpy 矩阵中

    from typing import Union,List
    import numpy
    import cv2
    import os
    def load_image(image: Union[str, numpy.ndarray]) -> numpy.ndarray:
        # Image provided ad string, loading from file ..
        if isinstance(image, str):
            # Checking if the file exist
            if not os.path.isfile(image):
                print("File {} does not exist!".format(imageA))
                return None
            # Reading image as numpy matrix in gray scale (image, color_param)
            return cv2.imread(image, 0)
    
        # Image alredy loaded
        elif isinstance(image, numpy.ndarray):
            return image
    
        # Format not recognized
        else:
            print("Unrecognized format: {}".format(type(image)))
            print("Unrecognized format: {}".format(image))
        return None
    

    然后您可以使用以下方法绘制多个图像:

    import matplotlib.pyplot as plt
    def show_images(images: List[numpy.ndarray]) -> None:
        n: int = len(images)
        f = plt.figure()
        for i in range(n):
            # Debug, plot figure
            f.add_subplot(1, n, i + 1)
            plt.imshow(images[i])
    
        plt.show(block=True)
    

    show_images 方法接受输入的图像列表,您可以使用load_image 方法迭代地读取这些图像。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-16
      相关资源
      最近更新 更多