import cv2 # 入力フォルダ input_tr = "./tmp4" # 入力フォルダ input_bg = "./tmp1" # 出力フォルダ output_path = "./outBalls" # 入力フォルダからファイル名を取得 all_files = os.listdir(input_tr) #特定の拡張子のファイルのみを取り出す files = [i for i in all_files if i.endswith('.png') == True] # 入力フォルダからファイル名を取得 all_files_bg = os.listdir(input_bg) #特定の拡張子のファイルのみを取り出す files_bg = [i for i in all_files_bg if i.endswith('.jpg') == True] for file_name in files: png_image = cv2.imread(input_tr + '/' + file_name, cv2.IMREAD_UNCHANGED) # アルファチャンネル込みで読み込む png_image = cv2.resize(png_image,None,fx=1.0,fy=1.0) # ファイル名抽出 file_name_1 = file_name.split('.')[0] for file_name_bg in files_bg: # ファイル名抽出 file_name_2 = file_name_bg.split('.')[0] frame_bg = cv2.imread(input_bg + '/' + file_name_2 + '.jpg') # 貼り付け先座標の設定。とりあえず左上に ###x1, y1, x2, y2 = 180, 30, png_image.shape[1]+180, png_image.shape[0]+30 x1, y1, x2, y2 = 0, 0, png_image.shape[1]+0, png_image.shape[0]+0 # 合成! frame_bg[y1:y2, x1:x2] = frame_bg[y1:y2, x1:x2] * (1 - png_image[:, :, 3:] / 255) + \ png_image[:, :, :3] * (png_image[:, :, 3:] / 255) cv2.imwrite(output_path + '/' + file_name_1 + '_' + file_name_2 + '.png', frame_bg)