75 lines
2.6 KiB
Python
Executable File
75 lines
2.6 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
# -*- coding: UTF-8 -*-
|
|
import cv2, os, sys, re
|
|
|
|
def Stitch_pic(Ori_image_path, Ori_label_path, Result_dir, img_pos, label_pos):
|
|
|
|
# 读取两张没有stitch_pos通道的图片
|
|
img1 = cv2.imread(Ori_image_path) # 底层图片
|
|
img2 = cv2.imread(Ori_label_path) # 顶层图片
|
|
|
|
Result_name = os.path.splitext(os.path.basename(Ori_image_path))[0]
|
|
|
|
# 将img2调整为与img1大小相同
|
|
if img1.shape != img2.shape:
|
|
img2 = cv2.resize(img2, (img1.shape[1], img1.shape[0]))
|
|
|
|
# 拼接图片
|
|
if img_pos == 'up' and label_pos == 'down':
|
|
result = cv2.vconcat([img1, img2])
|
|
elif img_pos == 'down' and label_pos == 'up':
|
|
result = cv2.vconcat([img2, img1])
|
|
elif img_pos == 'left' and label_pos == 'right':
|
|
result = cv2.hconcat([img1, img2])
|
|
elif img_pos == 'right' and label_pos == 'left':
|
|
result = cv2.hconcat([img2, img1])
|
|
else:
|
|
RED = '\033[91m'
|
|
END = '\033[0m'
|
|
print(RED + "The input of relative_pos is wrong, img_pos is " + img_pos + " label_pos is " + label_pos + END)
|
|
os.exit()
|
|
|
|
# 保存结果
|
|
if not os.path.exists(Result_dir):
|
|
os.makedirs(Result_dir)
|
|
cv2.imwrite(os.path.join(Result_dir, Result_name+'.png'), result)
|
|
print("堆叠图片写入地址:", os.path.join(Result_dir, Result_name+'.png'))
|
|
|
|
|
|
if __name__ == '__main__':
|
|
Ori_image_path = sys.argv[1] # 背景所在路径
|
|
Ori_label_path = sys.argv[2] # 上层图片所在路径
|
|
Result_dir = sys.argv[3] # 结果所在目录
|
|
relative_pos = str.lower(sys.argv[4])
|
|
|
|
match_up = re.search(r'up', relative_pos)
|
|
match_down = re.search(r'down', relative_pos)
|
|
match_left = re.search(r'up', relative_pos)
|
|
match_right = re.search(r'down', relative_pos)
|
|
|
|
if match_up and match_down:
|
|
pos_up = match_up.start()
|
|
pos_down = match_down.start()
|
|
if pos_down < pos_up :
|
|
img_pos = "down"
|
|
label_pos = "up"
|
|
else:
|
|
img_pos = "up"
|
|
label_pos = "down"
|
|
elif match_left and match_right:
|
|
pos_left = match_up.start()
|
|
pos_right = match_down.start()
|
|
if pos_left < pos_right :
|
|
img_pos = "left"
|
|
label_pos = "right"
|
|
else:
|
|
img_pos = "left"
|
|
label_pos = "right"
|
|
else:
|
|
print("Either 'up'/'down' 'left'/'right' is missing or in the text.")
|
|
print("Set to default img_pos = up label_pos = down")
|
|
img_pos = "up"
|
|
label_pos = "down"
|
|
|
|
# 进行对叠程序
|
|
Stitch_pic(Ori_image_path, Ori_label_path, Result_dir, img_pos, label_pos) |