Python给图片添加盲水印

文章目录

简介

盲水印就是图片有水印但人眼看不出来,需要通过程序才能提取水印,相当于隐形“盖章”,可以用在数据泄露溯源、版权保护等场景。

该库出自阿里巴巴安全团队,强大之处:

  • 解析水印图时无需原图
  • 水印图剪裁、旋转都不会破坏图中的盲水印
  • 支持密码加密

缺点:

  • 耗时长
  • 对底色较白的图破坏比较明显

安装

pip install blind-watermark
pip install opencv-python
pip install PyWavelets

初试

ori_img.png
《Python给图片添加盲水印》

watermark.png
《Python给图片添加盲水印》
添加并提取盲水印

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
《Python给图片添加盲水印》
extracted.png
《Python给图片添加盲水印》

遇到的坑

  1. 嵌入的信息不能过多,也就是图片过大,否则会溢出。
  2. 运算时间久,CPU使用i7-10510U,加盲水印耗时16.5秒,提取盲水印耗时11.5秒。

参考文献

  1. Blind Watermark GitHub
    原文作者:XerCis
    原文地址: https://blog.csdn.net/lly1122334/article/details/114278053
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞