照片里能藏多少秘密?blind_watermark 图片盲水印上手指南 📅 发布时间:2026/9/12 15:48:16 👁 浏览次数: 照片里能藏多少秘密blind_watermark 图片盲水印上手指南【免费下载链接】blind_watermarkBlindInvisible Watermark 图片盲水印提取水印无须原图项目地址: https://gitcode.com/GitHub_Trending/bl/blind_watermark给图片加水印多数人只会贴一行显眼的白字一截图就没了。blind_watermark 走的另一条路是图片盲水印把信息写进像素的频域里肉眼看不出差别即使被截图、旋转、缩放也读得出来。这篇文章讲清它的原理、三种内容和抗攻击表现顺带提醒几个新手容易忽略的细节。 先搞懂两件事盲在何处藏在哪里盲水印和普通水印的区别普通水印是画在图上的字被裁掉就找不回来。图片盲水印的盲指提取时不需要原图只要手里有打过水印的图、密码和水印长度就能把内容读回来。项目里有两个密码参数password_img 影响水印在图片里的落点分布password_wm 决定比特内容的排列顺序。两个都不知道的人即使看清了算法拿到的也只是一串乱序比特拼不回原来的文字。信息藏在哪个频段算法链条是小波分解DWT→ 分块离散余弦变换DCT→ 奇异值分解SVD。翻译成白话先把图片拆成人眼不太敏感的高频细节层再把细节切成 4×4 的小块对每块做变换最后在变换系数上做极其微小的调整来编码 0 和 1。正因为盲水印的改动小到肉眼察觉不到图片看起来和原图一模一样。以项目示例那张 738×1108 的照片为例大约能嵌入一万二千多个比特折合约五百个汉字容量不小。⌨️ 三种水印内容两条命令跑通命令行两分钟体验先 pip install blind-watermark 装好终端里两条命令就能完成藏和取blind_watermark --embed --pwd 1234 image.jpg watermark text embed.png blind_watermark --extract --pwd 1234 --wm_shape 111 embed.png第一行把文字 watermark text 藏进 image.jpg 并另存为 embed.png第二行用同一个密码把这段盲水印读出来--wm_shape 填嵌入时打印的位长度本例是 111。这个长度值嵌入时会自动打印记下来即可。在 Python 里嵌入文字、图片或比特嵌入流程四步建对象、读图、读水印、写入。from blind_watermark import WaterMark bwm WaterMark(password_img1, password_wm1) bwm.read_img(ori.jpeg) bwm.read_wm(hello world, modestr) bwm.embed(output.png)read_wm 的 mode 有三个选项str 藏文字img 藏一张图作为盲水印先转成黑白点阵每个点对应 1 比特bit 直接藏 0/1 数组。提取时另建一个 WaterMark 对象调用 extract 并传入 wm_shape文字传长度图片传 (高, 宽)和输出文件名比特模式的返回值是一组 0~1 的浮点数自己按 0.5 卡阈值就能还原。️ 七种攻击之后水印还在这是 blind_watermark 最有说服力的部分。项目组对打过盲水印的图依次做了旋转、截图、遮挡、裁剪、缩放、椒盐噪声、亮度调整七种攻击每一张被破坏过的图里都提取出了完整的水印。攻击方式图片经历了什么提取结果旋转 45 度整图转 45°再转回来完整文字随机截图裁掉一角再缩小完整文字多区域遮挡图上盖住多个色块完整文字纵向裁剪裁掉一条再填回原尺寸完整文字缩放压到 400×300再拉回原尺寸完整文字椒盐噪声5% 的像素加黑白噪点完整文字亮度下调 10%整体压暗一档完整文字截图裁剪之后盲水印如何复原提取截图是社交传播里最常见的攻击别人对你打过水印的图截个局部分辨率也变了。项目里的 recover 模块专门处理这种场景estimate_crop_parameters 先猜测裁剪位置和缩放比例recover_crop 把图复原回原始尺寸之后照常提取盲水印。如果攻击参数已知比如自己测试时截的图直接传参数就行省去猜测这一步。上手建议与常见坑三个容易踩的坑经验提示嵌入后立刻记下 wm_bit 的长度命令行会打印Python 里用 len(bwm.wm_bit)。提取盲水印时的 wm_shape 参数就靠它忘了就解不出来。经验提示两个密码在嵌入和提取时必须完全一致。改错一个数字提取结果是一堆乱码而且程序不会报错提醒你。第三个坑是容量水印比特数不能超过图片可容纳的块数超了会直接抛出溢出异常。前面提到的五百个汉字就是那张示例图的天花板再长就得换更大的图。四条上手建议先用命令行跑通一遍嵌入和提取再切到 Python 写脚本把密码和 wm_shape 一起记在配置或笔记里别只存在脑子里图片盲水印先拿小图试如 64×64 的点阵 logo容量不够会立刻报溢出批量处理时显式设置 processes 参数控制并发不传则默认用满所有核心带透明通道的 PNG 也能直接读入【免费下载链接】blind_watermarkBlindInvisible Watermark 图片盲水印提取水印无须原图项目地址: https://gitcode.com/GitHub_Trending/bl/blind_watermark创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考