图标准备

做完全景之后例行补个地面图标。 全景蒙版制作比较随意,这里我将图标放到宽高2:1的图片的左半区域的中心位置,之后用全景图软件旋转90°,稍加处理就可以得到要叠加在全景图上的图标了。

过程如图:(实际制作的时候为了容易处理,用纯白或者纯黑色图片) logo模板制作

代码

用python添加水印,其实有很多方式。 比如掩码什么的,不过这里我找到的方法也是蛮简单的,带权叠加像素各颜色通道就可以了。

import cv2
import numpy as np
import os

#添加水印
def addWMark(img, img_Logo):

    img = cv2.resize(img,(17000, 8500), interpolation = cv2.INTER_AREA)
    rows,cols,channels = img_Logo.shape
    result = np.zeros((rows, cols, 3), np.uint8)

    alpha = img_Logo[:, :, 3] / 255.0
    result[:, :, 0] = (1. - alpha) * img[:, :, 0] + alpha * img_Logo[:, :, 0]
    result[:, :, 1] = (1. - alpha) * img[:, :, 1] + alpha * img_Logo[:, :, 1]
    result[:, :, 2] = (1. - alpha) * img[:, :, 2] + alpha * img_Logo[:, :, 2]

    return result

def file_name(dir_path):
    global f_namelist  # 文件或文件夹名称(图片)
    f_name = []
    f_namelist = []
    for root, dirs, files in os.walk(dir_path):
        f_namelist.append(files)
    return f_name, f_namelist

if __name__ == "__main__":
    Pic_dir = input("请输入图片路径:")
    _, f_namelist = file_name(Pic_dir)
    img_Logo_dir = input("水印路径:")
    img_Logo = cv2.imread(img_Logo_dir, -1)

    for i in range(len(f_namelist[0])):
        img = cv2.imread(Pic_dir+"/"+f_namelist[0][i], -1)  # 背景
        img_out = addWMark(img, img_Logo)

        if (not os.path.exists(Pic_dir+"/"+"out/")):
            os.makedirs(Pic_dir+"/"+"out/")
        cv2.imwrite(Pic_dir+"/"+"out/"+f_namelist[0][i], img_out)
        print(f_namelist[0][i] + "-完成")

效果

最后效果 例行撒花★,°:.☆( ̄▽ ̄)/$:.°★


仅此而已的地方