news 2026/9/12 14:25:00

blind_watermark 盲水印视觉定制:3 个参数调出你的专属水印输出

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
blind_watermark 盲水印视觉定制:3 个参数调出你的专属水印输出

blind_watermark 盲水印视觉定制:3 个参数调出你的专属水印输出

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

深夜把图发出去之前,你其实只想干一件小事:给图加一道只有自己能认出来的暗记,而不是默认那种"加了和没加看不出区别、强度也懒得管"的水印。blind_watermark 是一个基于 DWT-DCT-SVD 的盲水印库,最大的特点是提取水印不需要原图。它没有图形界面,真正的"视觉个性化"发生在输出这一侧——你决定水印藏成文字、图像还是原始比特,再决定它藏得多结实、输出文件留多大。下面几个参数,就是把默认水印改成"你的样子"的全部抓手。

默认水印输出为什么不够用

默认用法一行命令就能出图,但它给所有人的输出长得一模一样:不可见、强度固定、文件大小看运气。对个人创作者、图库发布者、内容团队来说,默认档只解决了"有没有",没解决"像不像我的"。

  • 水印内容形式单一:默认只按文字走,想藏一张自己的标识图或一段编码位,得换一种模式。
  • 画质与强度是绑死的:藏得越结实,原图失真越明显,默认值并不一定是你最想要的那个平衡点。
  • 输出文件不可控:同一张图,有的场景要最小体积,有的要尽量保真,默认不给你这个开关。

认清这三点,你就知道"定制"要动哪里:形式、强度、输出。

找到 blind_watermark 的定制入口

定制入口有三处,从省事到灵活排序,你挑顺手的:

  • 命令行blind_watermark --embed ...直接出图,适合批量脚本,定义见 cli_tools.py。
  • Python APIfrom blind_watermark import WaterMark后调read_img / read_wm / embed,所有可调参数都挂在构造器上,核心在 WaterMark 类。
  • 示例目录examples/里每种形式都有一份可运行脚本,照着抄最快。

想先跑通再改,先备一张测试原图。仓库自带的标准测试图可以直接用:

核心可调参数一览表

把这几个"变量"看懂,定制就通了。它们不在配置文件里,而是写在调用WaterMark(...)时的参数上:

变量含义怎么改对输出的影响
mode水印形式str文字 /img图像 /bit比特决定暗记藏成什么"样子"
password_img/password_wm加解密口令换成你自己的整数换口令后别人提不出来
d1/d2强度档位在 bwm_core.py 里调整越大越抗攻击,但原图失真越大
compression_ratio输出压缩embed(..., compression_ratio=...)控制成品文件体积与画质
fast_mode速度档构造参数里开关快但略降鲁棒性

其中d1/d2是"强度"的核心旋钮,源码里注释写得很直白:越大鲁棒性越强,但输出图片失真越大。这是"藏得稳"和"看得舒服"之间唯一的权衡,也是你最容易做出自己风格的地方。

按场景定制你的水印

藏一句自己的话(文字水印)

最常用。mode='str'时传入一句署名或编号即可,参考 example_str.py:

bwm = WaterMark(password_img=1, password_wm=1) # 口令换成你的 bwm.read_wm('@你的名字', mode='str') # 藏成一句文字

白话:口令两个数换成自己的,水印内容换成你想藏的那句话,提取时只要口令和长度对上就能还原。

藏一张标识图(图像水印)

想让暗记是"一张图"而不是一行字,用 example_img.py,read_wm直接喂图片路径:

bwm.read_wm('pic/watermark.png') # 水印是一张图 bwm.embed('output/embedded.png')

白话:把你要藏的小图(logo、二维码)路径传进去,它会被压成黑白位再藏进原图,提取时按wm_shape还原成图。

藏一段原始比特(比特水印)

需要机器可读、或对接自己的协议时,用 example_bit.py 传布尔数组:

bwm.read_wm([True, False, True], mode='bit') # 任意 0/1 序列

白话:适合把 ID、校验位这类结构化信息藏进去,提取回来的是浮点数组,你按阈值(如 0.5)自己判 0/1。

三种形式出图后,水印都不可见,但效果是"原图 → 带水印的图"这条链路:

常见坑与解法

现象解法
编解码版本/口令不一致提取出来是乱码保证两边口令、版本相同,password_img/password_wm一致
忘了记wm_shape提取报错wm_shape needed提取前把水印长度或长宽存下来,参考 example_str.py 里len_wm
d1/d2调太大人眼看出噪点/失真回退默认值,或用fast_mode先快速预览再精调
被裁剪/旋转后提取失败攻击后还原不出来用 att.py 模拟攻击、recover.py 还原再提取
透明图处理异常带 alpha 的图出图怪库会自动剥离 alpha 再合成,别手动去掉透明通道

上手前自检清单

  • pip install blind-watermark且版本与解码端一致
  • 测试原图、水印内容(文字/图/比特)都备好了
  • 两个口令已改成自己的值并记录在案
  • 水印长度len_wmwm_shape已保存,提取时要用
  • d1/d2强度与compression_ratio已按需求设好,并肉眼看了一次成品
  • 至少用 att.py 模拟了一种你最担心的攻击(裁剪/旋转/缩放)并验证能还原

把清单走完,你的盲水印就从"默认那一份"变成了"你自己的那一份"。

下一步可以直接照着 example_str.py 跑通一次文字水印,把password和那句署名换成你自己的,再调一次d1看失真变化——一次就能看清强度与画质之间的取舍。依赖与用法细节见 requirements.txt 和 中文 README。

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

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/12 14:23:42

论文讨论部分怎么搭?按论证层次拆解

讨论不是结果之后的自由发挥,而是一句一句垫出来的。每一句判断底下垫的是哪一类凭据,这类凭据允许你说到哪一步,直接决定了讨论能不能立得住。 讨论要写到多深、跟前人怎么对比、跟结果怎么分工、按什么顺序写,各有专篇&#xff…

作者头像 李华
网站建设 2026/9/12 14:22:39

Sway Libraries 指南:用 library 关键字构建可复用智能合约代码

Sway Libraries 指南:用 library 关键字构建可复用智能合约代码 【免费下载链接】sway 🌴 Empowering everyone to build reliable and efficient smart contracts. 项目地址: https://gitcode.com/GitHub_Trending/sw/sway 本篇指南聚焦 Sway 语…

作者头像 李华
网站建设 2026/9/12 14:22:12

在 Apple Silicon 上高效部署本地大模型:self-llm 项目 MLX-LM 实战指南

在 Apple Silicon 上高效部署本地大模型:self-llm 项目 MLX-LM 实战指南 【免费下载链接】self-llm 《开源大模型食用指南》针对中国宝宝量身打造的基于Linux环境快速微调(全参数/Lora)、部署国内外开源大模型(LLM)/多…

作者头像 李华
网站建设 2026/9/12 14:21:21

告别EasyExcel:Apache Fesod如何搞定复杂表头与嵌套列表

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/12 14:20:56

Spring AI (第三章) 自定义拦截器+系统提示词(基础总结)

Spring AI (第三章) 自定义拦截器系统提示词(基础总结) 文章目录Spring AI (第三章) 自定义拦截器系统提示词(基础总结)一、章节目的二、拦截器2.1 拦截器是什么2.2 拦截器的作用三、常见内置实现类(Spring AI 已经帮你…

作者头像 李华