【Python】基于blind-watermark库添加图片盲水印

news/2025/1/8 4:47:48/

blind-watermark 是一个用于在图像中添加和提取盲水印的 Python 库。盲水印是一种嵌入信息(如水印)到图像中的方法,使得水印在视觉上不可见,但在需要时可以通过特定的算法进行提取。以下是如何使用 blind-watermark 库来添加和提取盲水印的示例。

首先,你需要安装 blind-watermark 库。你可以通过以下命令来安装它:

pip install blind-watermark

添加盲水印

下面是一个示例代码,用于在图像中添加盲水印:

python">from blind_watermark import Watermark
import cv2# 读取原始图像和水印图像
original_image_path = 'path_to_your_original_image.png'
watermark_image_path = 'path_to_your_watermark_image.png'# 加载图像
original_image = cv2.imread(original_image_path, cv2.IMREAD_GRAYSCALE)
watermark_image = cv2.imread(watermark_image_path, cv2.IMREAD_GRAYSCALE)# 创建水印对象
wm = Watermark(alpha=32)  # alpha 是水印嵌入强度# 添加水印到原始图像
marked_image = wm.embed(original_image, watermark_image)# 保存带有水印的图像
cv2.imwrite('marked_image.png', marked_image)

提取盲水印

下面是一个示例代码,用于从带有水印的图像中提取盲水印:

python"># 读取带有水印的图像
marked_image_path = 'marked_image.png'
marked_image = cv2.imread(marked_image_path, cv2.IMREAD_GRAYSCALE)# 使用相同的水印对象(注意要使用相同的 alpha 值)
wm = Watermark(alpha=32)# 提取水印
extracted_watermark = wm.extract(marked_image, original_image)# 保存提取的水印图像
cv2.imwrite('extracted_watermark.png', extracted_watermark)

注意事项

  1. 图像格式:确保原始图像和水印图像都是灰度图像(即单通道图像)。你可以使用 OpenCV 的 cv2.imread 函数,并指定 cv2.IMREAD_GRAYSCALE 标志来读取灰度图像。

  2. 图像大小:通常,水印图像应该比原始图像小得多。如果水印图像太大,可能会导致嵌入水印后的图像质量下降或水印提取效果不佳。

  3. alpha 参数alpha 参数控制水印的嵌入强度。较大的 alpha 值会使水印更难以去除,但也可能导致原始图像质量下降。

  4. 图像路径:确保提供的图像路径是正确的,并且图像文件存在。

通过以上步骤,你可以使用 blind-watermark 库在图像中添加和提取盲水印。如果你遇到任何问题,请查阅 blind-watermark 的官方文档或 GitHub 仓库以获取更多信息和帮助。


http://www.ppmy.cn/news/1561462.html

相关文章

君正T41交叉编译ffmpeg、opencv并做h264软解,利用君正SDK做h264硬件编码

目录 1 交叉编译ffmpeg----错误解决过程,不要看 1.1 下载源码 1.2 配置 1.3 编译 安装 1.3.1 报错:libavfilter/libavfilter.so: undefined reference to fminf 1.3.2 报错:error: unknown type name HEVCContext; did you mean HEVCPr…

Fastlio_localization的完整跑通记录,包括源码获取、编译、地图制作、运行及运行视频、脚本修改、结果保存等(跑通官方数据集以及Apollo数据集)

这篇文章做一个Fastlio_localization(以下简称fastlio_lc)的跑通记录文档。 步骤包括:源码获取、数据集获取、环境配置、源码编译、定位地图制作、基于数据集的脚本修改、源码运行、定位结果保存txt 等步骤 1.源码获取 1.直接进入github上下载,地址为&…

爬虫基础之爬取表情包GIF

网站地址 : 热门表情_发表情,表情包大全fabiaoqing.com 爬取思路: 通过开发者工具找到包含页面表情包的数据包 通过re parsel css等解析提取数据 爬取步骤: 一. 请求数据 模拟浏览器向服务器发送请求 打开F12 or 右击开发者模式 CtrlF 打开搜索框 输入要…

深入浅出 Pytest:自动化测试的最佳实践 pytest教程 程序测试 单元化测试

一、用法 .1 断言 在测试函数中用assert(断言)来判断测试是否符合预期。 # 一个成功的测试函数def test_passing():assert (1, 2, 3) (1, 2, 3)# 一个失败的测试函数def test_failing():assert (1, 2, 3) (3, 2, 1)assert 语句本质上是用于检查一个表…

【保姆级爬虫】微博关键词搜索并获取博文和评论内容(python+selenium+chorme)

微博爬虫记录 写这个主要是为了防止自己忘记以及之后的组内工作交接,至于代码美不美观,写的好不好,统统不考虑,我只能说,能跑就不错了,上学压根没学过python好吧,基本上是crtlc&ctrlv丝滑小…

JavaScript网页设计案例:响应式动态购物车

在现代网页开发中,购物车是电子商务网站的重要功能之一。通过JavaScript,我们可以实现一个响应式动态购物车,提供用户友好的体验,并展示前端开发的核心能力。 案例需求 我们的购物车需要实现以下功能: 动态添加商品&…

【C语言程序设计——选择结构程序设计】求一元二次方程的根(头歌实践教学平台习题)【合集】

目录😋 任务描述 相关知识 sqrt() 函数 编程要求 测试说明 通关代码 测试结果 任务描述 本关任务:根据求根公式,计算并输出一元二次方程的两个实根,要求精确道小数点后2位。要求方程系数从键盘输入。如果输入的系数不满足求…

开源模型应用落地-qwen2-7b-instruct-LoRA微调合并-ms-swift-单机单卡-V100(十三)

一、前言 本篇文章将使用ms-swift去合并微调后的模型权重,通过阅读本文,您将能够更好地掌握这些关键技术,理解其中的关键技术要点,并应用于自己的项目中。 二、术语介绍 2.1. LoRA微调 LoRA (Low-Rank Adaptation) 用于微调大型语言模型 (LLM)。 是一种有效的自适应策略,…