blind_watermark 是一个用于在图片中嵌入和提取“盲水印”的 Python 包。盲水印是一种数字水印技术,水印信息嵌入在图片中,但对人眼不可见,且具

4 阅读1分钟

blind_watermark 是一个用于在图片中嵌入和提取“盲水印”的 Python 包。盲水印是一种数字水印技术,水印信息嵌入在图片中,但对人眼不可见,且具有一定的抗攻击能力(如压缩、裁剪等)。该包支持文本和图片水印,适用于版权保护等场景。


安装方法

pip install blind-watermark

基本用法

1. 嵌入水印

嵌入文本水印

from blind_watermark import WaterMark

bwm1 = WaterMark(password_img=1, password_wm=1)
bwm1.read_img('input.png')
bwm1.read_wm('水印内容', mode='str')
bwm1.embed('output.png')

嵌入图片水印

from blind_watermark import WaterMark

bwm1 = WaterMark(password_img=1, password_wm=1)
bwm1.read_img('input.png')
bwm1.read_wm('wm.png', mode='img')
bwm1.embed('output.png')

2. 提取水印

提取文本水印

from blind_watermark import WaterMark

bwm1 = WaterMark(password_img=1, password_wm=1)
bwm1.extract('output.png', wm_shape=(30, 30), out_wm_name='extracted.png', mode='str')
print('提取出的水印内容:', bwm1.wm_content)

提取图片水印

from blind_watermark import WaterMark

bwm1 = WaterMark(password_img=1, password_wm=1)
bwm1.extract('output.png', wm_shape=(128, 128), out_wm_name='extracted.png', mode='img')

原理简介

  • DWT+DCT+SVD 算法
    该包主要基于小波变换(DWT)、离散余弦变换(DCT)和奇异值分解(SVD)等数字图像处理技术,将水印信息嵌入到图片的频域中。这样做的好处是水印对图片质量影响小,且具有较强的鲁棒性(抗压缩、抗裁剪等)。
  • 密码保护
    支持通过密码对图片和水印内容加密,提升安全性。
  • 支持多种水印类型
    可嵌入文本或图片作为水印。

参考资料

如需具体代码示例或遇到实际问题,可进一步说明需求。