matplotlibを使って複数の画像を表示させる自作関数


複数の画像をmatplotlibで表示させる関数です。備忘録として残します。

ソースコード

import cv2
import matplotlib.pyplot as plt

def imgShow(imgList, row_num = 1):
    img_num = len(imgList)

    if img_num == 1:
        fig = plt.figure()
        ax = fig.add_subplot(111)
        ax.imshow(imgList[0])

    else:
        fig, axes = plt.subplots(row_num, round(img_num / row_num))
        ax = axes.ravel()
        for i in range(img_num):
            ax[i].imshow(imgList[i])

    plt.show()

コードの説明

imgShow関数の引数に画像のリストと表示させたい行数(初期値は1行)を入れます。
imgListはリストなので、1枚表示の際にも[img]とリストの形で入れます。

具体例

# 画像1枚を表示させる場合
img = cv2.imread('0_.png')
imgShow([img]) # n=1は省略

# 画像2枚を表示させる場合
img = cv2.imread('0_.png')
img1 = cv2.imread('1_.png')
imgShow([img, img1])

# 画像4枚を表示させる場合
img = cv2.imread('0_.png')
img1 = cv2.imread('1_.png')
img2 = cv2.imread('2_.png')
img3 = cv2.imread('3_.png')
imgShow([img, img1, img2, img3], 2) # 2行で表示させたいのでrow_num=2としている

今回初めて投稿しました。今後も自分が使っていて便利だと思う関数をちょくちょく投稿していきたいと思います。