python初心者です。
現在、AとBのファイル内の画像を重ね合わせ
cv2.imwrite()で出力しようとしています。
具体的には
Aには、001.jpg,002.jpg・・・
Bには、001.jpg,002.jpg・・・
という画像ファイルが存在し
A内の001.jpgとB内の001.jpg、次にA内の002.jpgとB内の002.jpgとそれぞれに重ね合わせていき
それらをcv2.imwrite()で、このプログラムと同じ階層内に出力したい(重ね合わせてできた001.jpg,002.jpg・・・のような形)と考えています。
画像の処理部分はおおよそ書けましたが、出力部分がわかりません。
どなたか、助けていただけないでしょうか。
python
1import cv2 2import numpy as np 3import glob 4 5files1 =glob.glob('/A/*.jpg') 6files2 =glob.glob('/B/*.jpg') 7 8for f1 in files1: #あとはForで1ファイルずつ実行されていく 9 src = cv2.imread(f1) 10 11 for f2 in files2: 12 mask = cv2.imread(f2) 13 14height, width, color = src.shape # 幅・高さ・色を取得 15dst = np.zeros((height, width, 3), dtype = "uint8") # 合成画像用の変数を作成 16 17for y in range(0, height): 18 for x in range(0, width): 19 if (mask[y][x] > 240).all(): 20 dst[y][x] = src[y][x] 21 else: 22 dst[y][x] = 0 # 隠れている部分なので、黒にする
(追記)当然かもしれませんが、以下のようにコードを書いた際には、A内の001.jpgとB内の001.jpgしか出力されませんでした。
しかし重ね合わせ自体は成功していたので、出力部分以外には問題はないと考えています。
python
1 2import cv2 3import numpy as np 4import glob 5 6files1 =glob.glob('/A/*.jpg') 7files2 =glob.glob('/B/*.jpg') 8 9for f1 in files1: #あとはForで1ファイルずつ実行されていく 10 src = cv2.imread(f1) 11 12 for f2 in files2: 13 mask = cv2.imread(f2) 14 15height, width, color = src.shape # 幅・高さ・色を取得 16dst = np.zeros((height, width, 3), dtype = "uint8") # 合成画像用の変数を作成 17 18for y in range(0, height): 19 for x in range(0, width): 20 if (mask[y][x] > 240).all(): # 「青・緑・赤」すべてが241以上なら 21 dst[y][x] = src[y][x] # 隠れていない部分なので、「lena.jpg」の画素を代入 22 else: 23 dst[y][x] = 0 # 隠れている部分なので、黒にする 24 25cv2.imwrite("dst.jpg", dst) 26 27# cv2.imwrite("dst.jpg", dst) 28cv2.destroyAllWindows() # 終了処理
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。