質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

1113閲覧

画像を指定のサイズに分割し別名で保存したい

xeno

総合スコア16

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2021/10/01 09:03

行いたいこと:フォルダ内の画像すべてを指定のサイズに分割し、分割したものを別のファイル名で指定したディレクトリに保存したいです。

教えていただきたいこと:分割した画像をすべて保存する方法。保存する際に別のファイル名で保存する方法。

現状:分割はできているが、一部しか保存できない。

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"/home/script/data/Train400/") # 出力先のディレクトリを作成する。 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 = (48, 48) # 分割後の大きさ 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 cv2.imwrite(str(save_path), chunk)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

■結論
保存するパスに固有のパスを与えてください。

Python3

1 # 結果を保存する。 2 # save_path = output_dir / path.name 3 save_path = output_dir.name + "/" + str(i) + "_" + path.name

■起きていたこと
同じ名前で繰り返し画像が上書き保存されていました。
これの確認は、以下のようデバグ画像を表示させることで確認できます。
ちゃんと画像は切断はできていて、保存ができていない、という結論にここから至ります。

Python3

1 chunks.append(chunk) 2 #print(type(chunk)) 3 cv2.imshow("chunk",chunk) 4 cv2.waitKey(0)

投稿2021/10/01 22:42

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問