前提・実現したいこと
ディレクトリ内にある複数の画像を一括で分割して、別ディレクトリに保存する方法を知りたいです。
発生している問題・エラーメッセージ
1つの画像ファイルに対して分割することはできるのですが、複数の画像を対象としたときのコードがうまく書けません。
該当のソースコード
import cv2 import matplotlib.pyplot as plt import numpy as np import os img = cv2.imread('ファイル名.jpg') h, w, c = img.shape v_split = 2 # 垂直方向の分割数 h_split = 2 # 水平方向の分割数 #均等に分割できないと np.spllt() が使えないので、 除算したときに余りがでないように画像の端数を切り捨てる。 _img = img[:h // v_split * v_split, :w // h_split * h_split] print('{} -> {}'.format(img.shape, _img.shape)) #分割する。 out_imgs = [] for h_img in np.vsplit(_img, v_split): # 垂直方向に分割する。 for v_img in np.hsplit(h_img, h_split): # 水平方向に分割する。 out_imgs.append(v_img) out_imgs = np.array(out_imgs) print(out_imgs.shape) os.makedirs('output', exist_ok=True) for i, img in enumerate(out_imgs): cv2.imwrite(os.path.join('output', '{}.jpg'.format(i)), img)
補足情報(FW/ツールのバージョンなど)
上記コードに追加するような形、もしくは他の方法があればおしえていただきたいです。
os.path や pathlib を利用してはいかがでしょうか。
