ファイルを指定のサイズ(Pixel)で均等に分割して書き出しをしたいです

実現したいこと

ファイルサイズをPIXEL単位(横760PIXEL,縦1000PIXEL)で指定して均等に出力したいです
※横のサイズは元データから変更しない前提で考えております

発生している問題・分からないこと

指定したファイルサイズで出力ができなく困っております。

該当のソースコード

from pathlib import Path from PIL import Image import cv2 import numpy as np def get_paths(input_dir, exts=None): paths = sorted([x for x in input_dir.iterdir()]) if exts: paths = list(filter(lambda x: x.suffix in exts, paths)) return paths # ディレクトリ内の指定した拡張子のファイルをすべて取得する。 input_dir = Path(r"D:/test/01/760") # 出力先のディレクトリを作成する。 output_dir = Path(r"output") output_dir.mkdir(exist_ok=True) for path in get_paths(input_dir, exts=[".jpg", ".jpeg", ".png"]): # 画像を読み込む。 img = cv2.imread(str(path)) #print(img) size = (1000, 760) # 分割後の大きさ rows = int(np.ceil(img.shape[0] / size[0])) # 行数 cols = int(np.ceil(img.shape[1] / size[1])) # 列数 chunks = [] for row_img in np.array_split(img, rows, axis=0): for chunk in np.array_split(row_img, cols, axis=1): chunks.append(chunk) #print(type(chunk)) print(len(chunks)) # 保存する。 for i, chunk in enumerate(chunks): #save_path = output_dir / f"chunk_{i:02d}.png" #save_path = output_dir / f"{file_name}chunk_{i:02d}.png" #cv2.imwrite(str(save_path), chunk) # 結果を保存する。 # save_path = output_dir / path.name save_path = output_dir.name + "/" + str(i) + "_" + path.name cv2.imwrite(str(save_path), chunk)

試したこと・調べたこと

上記の詳細・結果

元データの縦のPIXEL数が1000PIXELで切る事ができません。
具体的な結果は、以下のようになります。
例:元データが縦760*7551の場合、
分割されたファイルの縦のpixelが1000pixelでは出力されず、
1~7個目までが縦944pixel、最後の8個目が943pixelとなってしまいます。
分割した縦のpixelの合計(7551pixel)は、元データの縦のpixel(7551pixel)と一致しております。
ご回答いただけまししたら大変助かります。

補足

特になし

コメントを投稿

0 コメント