没有原图也能读出水印:blind_watermark 的三种嵌入用法
2026/9/12 9:57:18 网站建设 项目流程

没有原图也能读出水印:blind_watermark 的三种嵌入用法

【免费下载链接】blind_watermarkBlind&Invisible Watermark ,图片盲水印,提取水印无须原图!项目地址: https://gitcode.com/GitHub_Trending/bl/blind_watermark

你遇到过这种情况吗:图片角落放了个小 logo,被转发的第一刀裁剪就没了;加一行半透明文字,对方调个色就洗干净了。blind_watermark 就是冲着这类痛点来的——一个图片盲水印工具,能把文本、图片或者 0/1 数据写进图像,而且提取时不依赖原图,只拿打过水印的图就能把信息读出来。

先扫一眼:定位与能力一张表

项目内容
项目blind_watermark
定位图片盲水印,基于 DWT-DCT-SVD 的变换域嵌入
核心能力文本 / 图片 / 二进制三种水印模式;提取无须原图;可扛旋转、裁剪、遮挡、缩放等常规攻击
适合谁个人创作者、图片分发平台、想在 Python 里做版权自证的人

文本水印:把一句话写进变换域 ✍️

解决什么问题:只想留个署名、账号或声明,懒得准备水印图。

怎么落地:mode='str'先把字符串编码成比特串,用密码password_wm打乱顺序,再写入变换域系数,核心实现在 bwm_core.py。

效果如何:仓库自带样例 examples/example_str.py 往示例图里写一行 215 比特的文字,提取结果与原串逐字符相等;60 度旋转、60 块随机遮挡、5% 椒盐噪声之后再提取,脚本里的 assert 依然全部通过。

图片水印:把 logo 塞进图里 🖼️

解决什么问题:你想嵌的不是一句话,而是一张二维图案——logo、二维码、角标。

怎么落地:mode='img'以灰度读入水印图,然后二值化后嵌入。注意这一步会丢掉灰度级,水印实际以 0/1 矩阵的形式存在,不是像素级拷贝。

效果如何:提取时把水印图的长宽传给wm_shape,拿回 0/1 矩阵。64×64 的 logo 整体图案能对上,但别指望每个边缘细节都完整还原。

二进制水印:嵌入任意 0/1 序列 🧩

解决什么问题:订单号、设备指纹、批次 ID——本来就是比特序列的东西。

怎么落地:把[True, False, ...]直接交给mode='bit'嵌入,提取时记下len(wm)当长度用。

效果如何:examples/example_bit.py 里 10 比特样例在截屏、旋转、椒盐、遮挡之后逐位 assert 一致;裁剪场景还配了estimate_crop_parametersrecover_crop,不知道裁剪参数时能先猜出裁剪区域再提取。

装好就能跑:三步完成嵌入与提取

第一步,装:

pip install blind-watermark

第二步嵌入、第三步提取,两行命令闭环。注意--wm_shape 111里的 111 是水印文本 "watermark text" 的比特长度,提取时漏了它就读不出来:

blind_watermark --embed --pwd 1234 examples/pic/ori_img.jpeg "watermark text" examples/output/embedded.png blind_watermark --extract --pwd 1234 --wm_shape 111 examples/output/embedded.png

第二条命令的输出就是水印文本本身。更多攻击演示可以参考 docs/ 目录。

什么时候它不够用:四个边界 ⚠️

用之前先说清它做不了什么。

  • “盲”只发生在提取侧。嵌入环节必须拿原图,你手上只有转发行没有原图时,无法补嵌。
  • 提取信息有前提:文本/二进制模式要给出比特长度wm_shape,图片模式要给出水印图尺寸,两者缺一都跑不通。
  • 它扛的是“常规”攻击。重压缩、大面积裁剪、AI 重绘之后再提取没有保证;裁剪虽然有一条 recover 通路,但需要你先跑参数估计,不是全自动黑盒。
  • 它处理的是普通 RGB 图片,视频、音频、16 位深医疗影像不在这个工具的职责范围内。

一句话选型

只署个名,选文本模式,比特长度记在本地配置里;要嵌 logo 或二维码,选图片模式,提前备好水印图尺寸;程序里要落指纹数据,选 bit 模式,提取端做 assert 校验,不一致就说明图被处理过。

【免费下载链接】blind_watermarkBlind&Invisible Watermark ,图片盲水印,提取水印无须原图!项目地址: https://gitcode.com/GitHub_Trending/bl/blind_watermark

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询