GitHub
security-privacydev-tools
Original source

blind_watermark — DWT-DCT-SVD Blind Watermarking Library

Summary

Python library for embedding invisible (blind) watermarks into images using DWT-DCT-SVD transform. By guofei9987.

Key features:

  • Embed text strings, images, or bit arrays as watermarks
  • Password-protected embedding/extraction
  • CLI tool + Python API
  • Survives attacks: rotation (45°), random crop, masking, vertical/horizontal cuts, resize, pepper noise, brightness changes
  • Multiprocessing support (processes= parameter)
  • Cross-platform (Windows/Linux/macOS), Python ≥ 3.5
  • MIT License

Stats: 13.6k stars, 1.4k forks, latest release v0.2.1 (Jan 2022)

Usage:

from blind_watermark import WaterMark

# Embed
bwm1 = WaterMark(password_img=1, password_wm=1)
bwm1.read_img('pic/ori_img.jpg')
bwm1.read_wm('@guofei9987 开源万岁!', mode='str')
bwm1.embed('output/embedded.png')
len_wm = len(bwm1.wm_bit)

# Extract
bwm1 = WaterMark(password_img=1, password_wm=1)
wm_extract = bwm1.extract('output/embedded.png', wm_shape=len_wm, mode='str')

CLI:

blind_watermark --embed --pwd 1234 input.jpeg "watermark text" output.png
blind_watermark --extract --pwd 1234 --wm_shape 111 output.png

Related projects:

  • text_blind_watermark — embed messages into text
  • HideInfo — steganography (image/sound/text)