news 2026/9/12 9:50:12

3 分钟看懂 blind_watermark:Python 图片盲水印嵌入与提取完整指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
3 分钟看懂 blind_watermark:Python 图片盲水印嵌入与提取完整指南

3 分钟看懂 blind_watermark:Python 图片盲水印嵌入与提取完整指南

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

blind_watermark 是一个 Python 图片盲水印工具:它把水印信息藏进照片的频域背景里,肉眼几乎看不出,需要时又能原样取回;而且提取水印不用原图。这篇 blind_watermark 教程带你搞清三件事——它是干什么的、怎么装、怎么用,以及为什么它比贴个透明 logo 更靠谱。

图片被盗用后,你如何自证原创

你做好的设计图发上网,隔天就被别人拿去卖。想维权,却拿不出"这是我原创"的硬证据:可见水印一眼就被抹掉,而传统数字水印往往得拿着原图去比对,原图一旦丢了就无从下手。

盲水印正是为这种场景准备的。它先把信息偷偷埋进图里,事后再取出来对质,过程中你手里那张被处理过的图就是证据。

📌 它是什么:提取无需原图的 Python 图片盲水印

一句话:blind_watermark 是嵌进图片里的隐形水印,提取时不需要原始图片。

和可见水印相比,它不贴 logo、不盖字,肉眼基本看不出差别;和需要原图比对的传统水印相比,它只凭被处理过的图就能把信息解出来,适合"原图可能已经不在手上"的维权场景。它支持三种水印:文字、图片、比特流。

左是原图,右是嵌入水印后的图,两张看起来几乎一样,但右边已能取回完整水印信息。

🚀 一行命令安装 + 最小可用示例

依赖只有 numpy、opencv-python、PyWavelets 三个库,装包时会自动装好。支持 Windows、Linux、macOS,Python ≥ 3.5。

pip install blind-watermark 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

第一条是嵌入,第二条是提取,--pwd是密码,提取时务必和嵌入时一致。想在代码里用,几行就够:

from blind_watermark import WaterMark bwm = WaterMark(password_img=1, password_wm=1) bwm.read_img('examples/pic/ori_img.jpeg') bwm.read_wm('你的水印文字', mode='str') bwm.embed('examples/output/embedded.png')

嵌入后记下水印比特长度(等于水印比特数),提取时用它当wm_shape

bwm = WaterMark(password_img=1, password_wm=1) print(bwm.extract('examples/output/embedded.png', wm_shape=6, mode='str'))

接口见 WaterMark 主类,更多写法参考 完整测试示例。

🧪 旋转、噪声、缩放:被攻击后还能提取吗

仓库自带一组攻击测试:把打水印的图旋转 45 度、加椒盐噪声、缩放、裁剪、遮挡后再提取。示例中这些情况下都能把水印文字完整取回(具体成功率以仓库文档为准)。

攻击脚本在 att.py。

🔍 原理速览:DWT-DCT-SVD 是怎么藏进去的

不用记公式,记住三步。第一步,把图转成 YUV(一种把图拆成亮度加颜色通道的表示法),再做小波变换 DWT(把图拆成"低频背景 + 高频细节"),只动背景。频域可以理解为:不按每个像素、而按"变化快慢"来描述一张图。

第二步,把背景切成 4×4 小块,每块做余弦变换 DCT(把像素信息压成频率成分)。第三步,对每块做奇异值分解 SVD(把矩阵拆成几个代表主要信息的数值),把水印的 0/1 编码进最大的两个奇异值,再逆变换还原,人眼看不出差别。

抗攻击靠两点:同一个 0/1 会在许多块、三个通道里重复写入,提取时取平均,个别块被破坏也不影响整体;提取时再用密码把乱序还原。核心逻辑在 bwm_core.py,参数 d1、d2 用来在"更鲁棒"和"更清晰"之间权衡。

场景与选型建议:版权、溯源、防伪

  • 版权保护:用文字水印mode='str'写明署名加时间戳,被盗后一条提取命令即可当举证材料。
  • 内容溯源:用图片水印mode='img'嵌入二维码或编号,追踪内容在传播链上的流向。
  • 防伪验证:用比特流mode='bit'嵌入加密后的短数据,提取结果是 0~1 的浮点,自行卡阈值即可。

一句话收尾

blind_watermark 让你一行 pip 命令就能给图片加隐形水印,靠 DWT-DCT-SVD 三重变换藏在频域里,提取不用原图,还支持文字、图片、比特流三种模式。挑一张你真正在乎的图,照上面的最小示例跑一遍,几分钟就能亲眼确认:图被改了也拿得回来。

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

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

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

diagram-design:从绘图工具到工程化基础设施

1. 为什么“diagram-design”不是一张图,而是一套工程化思维“diagram-design”这个词最近在前端、产品、架构和教学圈里高频出现,但它绝不是指“画个流程图交差”这么简单。我带过三支跨职能团队做系统重构,每次启动前,技术负责人…

作者头像 李华
网站建设 2026/9/12 9:48:31

Rust Forward 2025技术大会亮点与Rust生态最新进展

1. Rust Forward 2025技术大会全景解读作为中国开源年会COSCon25的重要同期活动,Rust Forward 2025技术大会近日正式公布议程。这场聚焦Rust语言生态的开发者盛会,将呈现当前Rust技术栈的最新进展与实践成果。从议程设置来看,大会覆盖了系统编…

作者头像 李华
网站建设 2026/9/12 9:46:18

SpringBoot论坛系统开发实战与教学优化

/* 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 9:46:11

动态规划解决回文串调整问题:信奥经典题解析

/* 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 9:45:37

Reflex 布局组件 `rx.center`:用纯 Python 实现任意内容居中

Reflex 布局组件 rx.center:用纯 Python 实现任意内容居中 【免费下载链接】reflex 🕸️ Web apps in pure Python 🐍 项目地址: https://gitcode.com/GitHub_Trending/re/reflex rx.center 是 Reflex 框架中一个极简却高频使用的布局…

作者头像 李华