简介
盲水印就是图片有水印但人眼看不出来,需要通过程序才能提取水印,相当于隐形“盖章”,可以用在数据泄露溯源、版权保护等场景。
该库出自阿里巴巴安全团队,强大之处:
- 解析水印图时无需原图
- 水印图剪裁、旋转都不会破坏图中的盲水印
- 支持密码加密
缺点:
- 耗时长
- 对底色较白的图破坏比较明显
安装
pip install blind-watermark
pip install opencv-python
pip install PyWavelets
初试
ori_img.png
watermark.png
添加并提取盲水印
from PIL import Image
from blind_watermark import WaterMark
img = 'pic/ori_img.png' # 原图
wm = 'pic/watermark.png' # 水印
embed = 'output/embedded.png' # 添加盲水印后的图片
extract = 'output/extracted.png' # 提取盲水印
watermark = WaterMark()
watermark.read_img(img)
watermark.read_wm(wm)
watermark.embed(embed)
watermark.extract(filename=embed,
wm_shape=Image.open(wm).size,
out_wm_name=extract) # 提取盲水印
embedded.png
extracted.png
遇到的坑
- 嵌入的信息不能过多,也就是图片过大,否则会溢出。
- 运算时间久,CPU使用i7-10510U,加盲水印耗时16.5秒,提取盲水印耗时11.5秒。