下記のサイトで記載されているパターンに似ておりますが、
フォルダAとフォルダB内の画像のすべての組み合わせでなく、順番に横に連結させたいです。
https://teratail.com/questions/284453
https://teratail.com/questions/283284
https://teratail.com/questions/284253
下記コードですと、フォルダAの画像枚数×フォルダBの画像枚数のとてつもない数の新しい画像ができてしまいます。
python
1from PIL import Image 2import itertools 3from pathlib import Path 4 5def get_concat_h(im1, im2, color="black"): 6 dst = Image.new( 7 'RGB', (im1.width + im2.width, im1.height)) 8 dst.paste(im1, (0, 0)) 9 dst.paste(im2, (im1.width, 0)) 10 return dst 11 12img_dir1 = Path("フォルダの場所/trainA") # 左側の画像があるディレクトリ 13img_dir2 = Path("フォルダの場所/trainB") # 右側の画像があるディレクトリ 14output_dir = Path("フォルダの場所/combined") # 出力ディレクトリ 15output_dir.mkdir(exist_ok=True) 16 17for path1, path2 in itertools.product(img_dir1.iterdir(), img_dir2.iterdir()): 18 print(f"concat {path1} and {path2}") 19 img1 = Image.open(path1) 20 img2 = Image.open(path2) 21 22 dst = get_concat_h(img1, img2) 23 24 save_path = output_dir / f"{path1.stem}_{path2.stem}.jpg" 25 dst.save(save_path)
目的は下記フォルダCに生成された画像をpix2pixのデータセットにすることです。
フォルダAには256 x 256の画像
フォルダBには256 x 256の画像
フォルダCには上記を横に連結した512 x 256の画像
A
├── a.jpg
└── b.jpg
└── c.jpg
└── d.jpg
└── e.jpg
B
├── f.jpg
└── g.jpg
└── h.jpg
└── i.jpg
└── j.jpg
output
├── a_f.jpg
├── b_g.jpg
├── c_h.jpg
└── d_i.jpg
└── e_j.jpg
ご教授いただけますと幸いです。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/11 10:23