プログラミングを最近始め、分からない所があったため質問させていただきます。
画像処理にプログラミングを用いており、今までは画像の合成を1枚ずつ行っていました。
しかし、数万枚の画像を合成する必要性が出てきました。
まず、単体で合成を行う場合は次のコードを用いていました。
jupyterでpythonを用いて行いました。
jupyter
1import cv2 2import matplotlib.pyplot as plt 3import numpy as np 4a = cv2.imread('1.png') 5b = cv2.imread('2.png') 6c = cv2.addWeighted(src1=a,alpha=1,src2=b,beta=1,gamma=0) 7cv2.imwrite('3.png', c)
次に、私が今後行いたい複数の対応する画像の合成について説明します。
ディレクトリの構成は次のようになっています。
画像ファイルは実際に下記のような番号の名前を用いています。
a
1synthesis 2 └ A 3 ├ 00000.png 4 ├ 00001.png 5 ├ 00002.png 6 └ ... 7 └ B 8 ├ 00000.png 9 ├ 00001.png 10 ├ 00002.png 11 └ ... 12 └ C 13 └
AフォルダとBフォルダの対応する名前の画像を合成し、または上から順番に合成し、Cフォルダに00000.png、00001.png、00002.png、...という名前で出力したいです。
例えば、Aフォルダに10枚、Bフォルダに10枚画像があり、対応する画像をそれぞれ合成して、Cフォルダに10枚の合成画像の出力を行います。
このように、2つのフォルダ内の複数の対応する画像を一括で合成するにはどのようにすれば良いでしょうか。
初めてプログラミングに関する質問を行ったので、たどたどしい説明で申し訳ありません。
よろしくお願い致します。
回答者様のおかげで解決できました。
最終的に上手く動作したコードを以下に記載します。
python
1import cv2 2import pathlib 3 4filename_list = [f.name for f in pathlib.Path('A').glob('*.png')] 5for filename in filename_list: 6 a = cv2.imread(f'A/{filename}') 7 b = cv2.imread(f'B/{filename}') 8 c = cv2.addWeighted(src1=a,alpha=1,src2=b,beta=1,gamma=0) 9 cv2.imwrite(f'C/{filename}', c)
ありがとうございました。
回答1件
あなたの回答
tips
プレビュー