盲水印就是图片有水印但人眼看不出来,需要通过程序才能提取水印,相当于隐形“盖章”,可以用在数据泄露溯源、版权保护等场景。blind_watermark 目前支持嵌入图片、字符串和二进制三种方式。
安装
使用 pip install 安装
pip install blind-watermark
或者安装最新开发版本
git clone git@github.com:guofei9987/blind_watermark.git
cd blind_watermark
pip install .
使用示例
在 bash 中使用
# 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 中使用
「原图+水印=水印图」
填入水印:
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))
提取水印:
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 开源万岁!
对水印图像的攻击
攻击方式 | 攻击后的图像 | 提取的水印 |
---|---|---|
旋转 45 度 | ![]() |
‘@guofei9987 开源万岁!’ |
随机裁剪 | ![]() |
‘@guofei9987 开源万岁!’ |
面具 | ![]() |
‘@guofei9987 开源万岁!’ |
站切 | ![]() |
‘@guofei9987 开源万岁!’ |
横切 | ![]() |
‘@guofei9987 开源万岁!’ |
调整大小 | ![]() |
‘@guofei9987 开源万岁!’ |
胡椒噘音 | ![]() |
‘@guofei9987 开源万岁!’ |
亮度降低 10% | ![]() |
‘@guofei9987 开源万岁’ |
填入图像
填入水印:
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')
提取水印:
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', )
攻击方式 | 攻击后的图像 | 提取的水印 |
---|---|---|
旋转 45 度 | ![]() |
![]() |
随机裁剪 | ![]() |
![]() |
面具 | ![]() |
![]() |
传送门
开源协议:MIT
开源地址:https://github.com/guofei9987/blind_watermark
项目合集:https://github.com/OpenTechCol/OpenTechCol
「回复【加群】加入开源技术交流群,干货很多!」
-END-
原文始发于微信公众号(开源技术专栏):轻松搞定嵌入、提取图片盲水印的Python库
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
喜欢就支持一下吧
相关推荐
暂无评论内容