blind-watermark - 水印绑定

文章目录

    • [一、关于 blind-watermark](#一、关于 blind-watermark)
    • [二、bash 中使用](#二、bash 中使用)
    • [三、Python 调用](#三、Python 调用)
      • 1、基本使用
      • [2、attacks on Watermarked Image](#2、attacks on Watermarked Image)
      • [3、embed images](#3、embed images)
      • [4、embed array of bits](#4、embed array of bits)
    • 四、并发
    • [五、相关 Project](#五、相关 Project)

一、关于 blind-watermark

Blind watermark 基于 DWT-DCT-SVD.


安装

shell 复制代码
pip install blind-watermark

源码安装当前开发版本

shell 复制代码
git clone git@github.com:guofei9987/blind_watermark.git
cd blind_watermark
pip install .


二、bash 中使用

shell 复制代码
# embed watermark into image:
blind_watermark --embed --pwd 1234 examples/pic/ori_img.jpeg "watermark text" examples/output/embedded.png

# extract watermark from image:
blind_watermark --extract --pwd 1234 --wm_shape 111 examples/output/embedded.png

三、Python 调用

1、基本使用

Original Image + Watermark = Watermarked Image

+ '@guofei9987 开源万岁!' =


See the codes

嵌入水印:

python 复制代码
from blind_watermark import WaterMark

bwm1 = WaterMark(password_img=1, password_wm=1)
bwm1.read_img('pic/ori_img.jpg')
wm = '@guofei9987 开源万岁!'
bwm1.read_wm(wm, mode='str')
bwm1.embed('output/embedded.png')
len_wm = len(bwm1.wm_bit)
print('Put down the length of wm_bit {len_wm}'.format(len_wm=len_wm))

提取水印:

python 复制代码
bwm1 = WaterMark(password_img=1, password_wm=1)
wm_extract = bwm1.extract('output/embedded.png', wm_shape=len_wm, mode='str')
print(wm_extract)

输出:

@guofei9987 开源万岁!


2、attacks on Watermarked Image

attack method image after attack extracted watermark
Rotate 45 Degrees '@guofei9987 开源万岁!'
Random crop '@guofei9987 开源万岁!'
Masks '@guofei9987 开源万岁!'
Vertical cut '@guofei9987 开源万岁!'
Horizontal cut '@guofei9987 开源万岁!'
Resize '@guofei9987 开源万岁!'
Pepper Noise '@guofei9987 开源万岁!'
Brightness 10% Down '@guofei9987 开源万岁!'

3、embed images

嵌入水印:

python 复制代码
from blind_watermark import WaterMark

bwm1 = WaterMark(password_wm=1, password_img=1)
# read original image
bwm1.read_img('pic/ori_img.jpg')
# read watermark
bwm1.read_wm('pic/watermark.png')
# embed
bwm1.embed('output/embedded.png')

提取水印:

python 复制代码
bwm1 = WaterMark(password_wm=1, password_img=1)
# notice that wm_shape is necessary
bwm1.extract(filename='output/embedded.png', wm_shape=(128, 128), out_wm_name='output/extracted.png', )

attack method image after attack extracted watermark
Rotate 45 Degrees [
Random crop
Mask

4、embed array of bits

See it here

作为 demo,我们嵌入 6 bytes 数据:

python 复制代码
wm = [True, False, True, True, True, False]

嵌入:

python 复制代码
from blind_watermark import WaterMark

bwm1 = WaterMark(password_img=1, password_wm=1)
bwm1.read_ori_img('pic/ori_img.jpg')
bwm1.read_wm([True, False, True, True, True, False], mode='bit')
bwm1.embed('output/embedded.png')

提取:

python 复制代码
bwm1 = WaterMark(password_img=1, password_wm=1, wm_shape=6)
wm_extract = bwm1.extract('output/打上水印的图.png', mode='bit')
print(wm_extract)

请注意,wm_shape(水印的形状)是必需的

输出 wm_extract 是一个浮点数组。设置阈值,例如0.5。


四、并发

WaterMark(..., processes=None)

  • processes 进程数可以是整数。默认为 None,这意味着使用所有进程。

五、相关 Project


相关推荐
微刻时光20 天前
影刀RPA实战:常见实用功能指令
笔记·机器人·自动化·rpa·水印·影刀·影刀rpa
是梦终空1 个月前
SpringBoot实现图片添加水印
spring boot·水印
智慧的牛2 个月前
java往word中添加水印,往excel中添加图片
java·pdf·word·excel·水印
梦幻D开始2 个月前
easyPOI生成的excel添加水印
excel·水印
伊织code3 个月前
AudioNotes -将音频内容转 markdown
音频·markdown·提取·qwen·tts·funasr·audionotes
lsjweiyi4 个月前
基于opencv的图片加水印实现方案
图像处理·opencv·水印
linweidong5 个月前
Flink ProcessFunction不同流异同及应用场景
大数据·flink·iot·实时分析·水印·时间窗口
weixin_383196475 个月前
java 实现给PDF、PPT添加水印
java·pdf·水印
tekin5 个月前
go语言内置预编译 //go:embed xxx 使用详解
开发语言·后端·golang·预编译·filesystem·fs·embed