简介
盲水印就是图片有水印但人眼看不出来,需要通过程序才能提取水印,相当于隐形“盖章”,可以用在数据泄露溯源、版权保护等场景。
该库出自阿里巴巴安全团队,强大之处:
- 解析水印图时无需原图
- 水印图剪裁、旋转都不会破坏图中的盲水印
- 支持密码加密
缺点:
- 耗时长
- 对底色较白的图破坏比较明显
安装
pip install blind-watermark pip install opencv-python pip install PyWavelets
初试
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) # 提取盲水印
遇到的坑
- 嵌入的信息不能过多,也就是图片过大,否则会溢出。
- 运算时间久,CPU使用i7-10510U,加盲水印耗时16.5秒,提取盲水印耗时11.5秒。
参考文献
- Blind Watermark GitHub
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/217643.html原文链接:https://javaforall.net
