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)等数字图像处理技术,将水印信息嵌入到图片的频域中。这样做的好处是水印对图片质量影响小,且具有较强的鲁棒性(抗压缩、抗裁剪等)。 - 密码保护:
支持通过密码对图片和水印内容加密,提升安全性。 - 支持多种水印类型:
可嵌入文本或图片作为水印。
参考资料
如需具体代码示例或遇到实际问题,可进一步说明需求。