OpenCV实验:图片加水印

第二篇:图片添加水印(加 logo)


1. 实验原理

水印原理

  • 图片添加水印是图像叠加的一种应用,分为透明水印不透明水印
  • 水印的实现通常依赖于像素值操作 ,将水印图片融合到目标图片中,常用的方法包括:
    • 位运算:通过掩码(Mask)将目标区域清空,再将水印叠加到清空的区域。
    • Alpha 混合(Alpha Blending):通过加权计算将水印半透明地融合到目标图片。

步骤

  1. 将水印图片转为灰度图,并通过阈值处理生成二值化掩码。
  2. 利用掩码清空背景图像中水印位置的区域。
  3. 将水印图片嵌入到清空区域,完成水印添加。

2. 实验代码

以下为具体代码实现:

import cv2

# 读取背景图像
img = cv2.imread("./background.jpeg")

# 读取两个 logo 图像
logo = cv2.imread("./logo.png")

# --------------------处理第一个 logo--------------------

# 将 logo 转换为灰度图像,用于后续的二值化处理
logo_gray = cv2.cvtColor(logo, cv2.COLOR_BGR2GRAY)

# 对灰度图像进行二值化处理,生成二值掩码
_, logo_binary = cv2.threshold(
    logo_gray,             # 输入的灰度图像
    0,                     # 阈值(自动确定)
    255,                   # 二值化后的最大值
    cv2.THRESH_BINARY_INV  # 反阈值化,将前景变为黑色,背景变为白色
)

# 定义第一个 logo 的插入位置 (x1, y1)
x1, y1 = 10, 100

# 从背景图中截取一个与 logo 大小相同的 ROI(Region of Interest)区域
ROI = img[y1:y1+logo.shape[0], x1:x1+logo.shape[1]]

# 使用掩码进行位与运算,将 ROI 中对应 logo 的位置清空
ROI_logo = cv2.bitwise_and(ROI, ROI, mask=logo_binary)

# 将清空的 ROI 区域与 logo 图像进行加法操作,完成 logo 的融合
img_logo = cv2.add(ROI_logo, logo)

# 将融合后的 logo 替换回背景图的对应位置
img[y1:y1+logo.shape[0], x1:x1+logo.shape[1]] = img_logo

# --------------------显示最终结果--------------------

# 显示最终结果图像
cv2.imshow('image', img)

# 等待用户按键退出窗口
cv2.waitKey(0)

# 销毁所有窗口
cv2.destroyAllWindows()

3. 实验现象

实验结果

  1. 原始图片 :背景图为一个没有水印的图片。
  2. 水印图像 :Logo 被叠加到背景图的指定位置,与背景图的像素融合,看起来像是原始图像的一部分。
相关推荐
java1234_小锋10 分钟前
一周学会Flask3 Python Web开发-redirect重定向
前端·python·flask·flask3
重生之我要成为代码大佬11 分钟前
Python天梯赛10分题-念数字、求整数段和、比较大小、计算阶乘和
开发语言·数据结构·python·算法
Daitu_Adam15 分钟前
Windows11安装GPU版本Pytorch2.6教程
人工智能·pytorch·python·深度学习
阿正的梦工坊18 分钟前
Grouped-Query Attention(GQA)详解: Pytorch实现
人工智能·pytorch·python
Best_Me0740 分钟前
【CVPR2024-工业异常检测】PromptAD:与只有正常样本的少样本异常检测的学习提示
人工智能·学习·算法·计算机视觉
码界筑梦坊42 分钟前
基于Flask的短视频流量数据可视化系统的设计与实现
大数据·python·信息可视化·flask·毕业设计
山海青风1 小时前
从零开始玩转TensorFlow:小明的机器学习故事 4
人工智能·机器学习·tensorflow
YoseZang1 小时前
【机器学习】信息熵 交叉熵和相对熵
人工智能·深度学习·机器学习
eso19831 小时前
Spark MLlib使用流程简介
python·算法·spark-ml·推荐算法
Ronin-Lotus1 小时前
图像处理篇---图像处理中常见参数
图像处理·人工智能·信噪比·分贝·峰值信噪比·动态范围