open cv学习之图片添加水印

一,实验原理

添加水印的过程可以理解为将一张图片中的物体或图案提取出来,并叠加到另一张图片上。具体操作是:先将原始图像转换为灰度图并进行二值化,去除背景,得到一个掩膜图像。然后将掩膜与目标区域进行"与"运算,使目标物体的形状出现在该区域。最后,将目标物体图像与该区域相加,完成水印添加。

二,实验代码

add_img.py

python 复制代码
import cv2


def img_add(logo, img, x, y):
    # 将logo图像进行灰度化和二值化,得到一个白底的掩膜
    logo_gray = cv2.cvtColor(logo, cv2.COLOR_BGR2GRAY)
    _, logo_binary = cv2.threshold(logo_gray, 0, 255, cv2.THRESH_BINARY_INV)

    # 在原始图像中选取和logo同等大小的矩形区域
    # 这个区域的左上角坐标为(x, y),大小与logo相同
    ROI = img[y:y + logo.shape[0], x:x + logo.shape[1]]

    # 将ROI区域和logo的掩膜进行位与运算,结果存在ROI_logo中
    ROI_logo = cv2.bitwise_and(ROI, ROI, mask=logo_binary)

    # 将处理后的ROI区域与原始的logo进行加法运算,
    # 得到最终的融合logo与ROI区域的效果
    img_logo = cv2.add(ROI_logo, logo)

    # 将融合的图像在要添加logo的原图中进行替换
    img[y:y + logo.shape[0], x:x + logo.shape[1]] = img_logo
    return img

运行文件中:

python 复制代码
import cv2
from day4 import img_add

# 读取两个logo和一个原图
logo = cv2.imread("1.png")
logo2 = cv2.imread("3.png")
img = cv2.imread("2.jpeg")

# 调整原图的大小
img = cv2.resize(img, (0, 0), fx=1, fy=0.45)

# 在原图上的指定位置添加logo和logo2
img = img_add.img_add(logo, img, 120, 180)
img = img_add.img_add(logo2, img, 400, 200)

# 显示加上logo后的图像
cv2.imshow('image', img)
cv2.waitKey(0)

三,实验现象

结果:

相关推荐
2401_890095617 分钟前
如何判断武汉人工智能应用软件开发是否适用?从部署步骤入手
人工智能·武汉自动意志科技有限公司·智钳claw·人工智能应用软件开发·企业ai智能体系统·企业数字化服务
东莞市奥普新音频技术有限公司10 分钟前
国产音频分析仪怎么选?从性能参数、测试软件到自动化能力
人工智能·科技·测试工具·自动化·音视频·音频
一只积极向上的小咸鱼19 分钟前
pytorch 与资源核算
人工智能·pytorch·python
皮皮虾❀20 分钟前
钉钉AI服务商+智能体高阶定制+DEAP旗舰版一体化实战:从“通用AI不满足”到“独享算力+自有模型接入的专属智能体
人工智能·钉钉
xiaoxiangsiyan20 分钟前
现代大型虚拟化智慧园区整体架构EVPN‑VXLAN落地全解
运维·网络·学习·架构
方芯半导体25 分钟前
EtherCAT 从站方案中 MAC、PHY 与 MII 的层级关系与实现解析
网络·人工智能·单片机·macos·ethercat
风途科技~25 分钟前
路面温度监测站:红外遥感测温不接触路面,免维护长期连续监测
大数据·人工智能
必须会一定会26 分钟前
AI 编程隐私保护清单:API Key、代码上传、Agent 权限与 Git 历史排查
人工智能·git·ai编程
OceanBase数据库官方博客31 分钟前
OceanBase:从核心系统现代化到AI 创新
人工智能·oceanbase
YHHLAI32 分钟前
从「跑分」到「干活」:Benchmark 与 GPT 5.6 的两种叙事
大数据·前端·人工智能·react.js·前端框架