여러 이미지를 깔고 플롯하는 방법을 항상 잊어 버린다 (ML 용)

5599 단어 파이썬matplotlib

소개



이미지 데이터를 이런 느낌에 플롯하는 방법을 항상 잊어 버리는 자신의 메모입니다.


전제



데이터세트는 이러한 디렉토리 구성을 가지고 있다고 가정합니다.
├─Dataset
│ ├─classA
│ │ ├─classA의 이미지들
│ ├─classB
│ ├─classC
│ ├─classD
│ ├─classF
│ └─...
...

소스 코드



show_class_images.py
import glob
import os

import matplotlib.pyplot as plt
from PIL import Image

# データセットの親ディレクトリ
DATA_PARENT_DIR = '親ディレクトリを指定'
# 子ディレクトリのリスト
data_dir_list = glob.glob(DATA_PARENT_DIR + '\*')
# ディレクトリ数
class_num = len(data_dir_list)
# 1ディレクトリあたりに敷き詰める画像数
SHOW_FILE_NUM = 6

fig = plt.figure(figsize=(12, 12))

# subplot用のカウント
cnt = 1

for data_dir in data_dir_list:
    filepath_list = glob.glob(data_dir + '\*')
    dirname = os.path.basename(data_dir)

    # ディレクトリ内のファイル
    for i in range(SHOW_FILE_NUM):
        filepath = filepath_list[i]
        filename = os.path.basename(filepath)
        img = Image.open(filepath)
        # 6*6の1マス分を指定(cnt)してプロット
        ax = fig.add_subplot(class_num, SHOW_FILE_NUM, cnt)
        plt.imshow(img)
        # 目盛りを消す
        ax.axis('off')
        # ディレクトリ名(クラス名)+ファイル名をタイトルに出す
        plt.title(os.path.join(dirname, filename))
        # 描画用カウントアップ
        cnt += 1

plt.show()

# 保存する
fig.savefig('./subplot.png')


인용



데이터 세트는 여기에서 빌렸습니다. 고마워요.
DiceRecognitionDatasetForML

좋은 웹페이지 즐겨찾기