OpenCV中的水印添加

发布于:2024-12-18 ⋅ 阅读:(50) ⋅ 点赞:(0)

一、原理

        将两个不同的logo图像(logologo2)插入到背景图像(img)的指定位置。这个过程涉及到图像处理的几个关键步骤,包括灰度化、二值化、区域选择(ROI)、位运算和图像融合。

二、实验代码

import  cv2
# 输入两张图
img = cv2.imread("./bgc.jpeg")
logo = cv2.imread("./tm1.png")
logo2 = cv2.imread("./tm2.png")

# 对logo图进行灰度化和二值化 得到 白底的掩膜
logo_gray = cv2.cvtColor(logo, cv2.COLOR_BGR2GRAY)
_, logo_binary = cv2.threshold(logo_gray,
                               0,      # 阈值
                               255,     # 最大值
                               cv2.THRESH_BINARY_INV    # 反阈值法
                               )

logo_gray2 = cv2.cvtColor(logo2, cv2.COLOR_BGR2GRAY)
_, logo_binary2 = cv2.threshold(logo_gray2,
                               0,      # 阈值
                               255,     # 最大值
                               cv2.THRESH_BINARY_INV    # 反阈值法
                               )

# 在原图中 选取和logo图同等大小的 你想要插入logo的位置
ROI = img[10:10+logo.shape[0], 100:100+logo.shape[1]]
ROI2 = img[10:10+logo2.shape[0], 500:500+logo2.shape[1]]

# 将ROI 和 logo的掩膜进行位与运算
ROI_logo = cv2.bitwise_and(ROI,    # 参数1
                                ROI,    # 参数2
                                mask=logo_binary)   # logo做掩膜

ROI_logo2 = cv2.bitwise_and(ROI2,    # 参数1
                                ROI2,    # 参数2
                                mask=logo_binary2)

# 将处理后的ROI区域 与 原始的logo 融合add
img_logo = cv2.add(ROI_logo, logo)
img_logo2 = cv2.add(ROI_logo2, logo2)

# 将融合的图像 在要添加logo的原图中 替换
img[10:10+logo.shape[0], 100:100+logo.shape[1]] = img_logo
img[10:10+logo2.shape[0], 500:500+logo2.shape[1]] = img_logo2

cv2.imshow('image', img)
cv2.waitKey(0)

三、实验现象


网站公告

今日签到

点亮在社区的每一天
去签到