《开源精选》是我们分享Github、Gitee等开源社区中优质项目的栏目,包括技术、学习、实用与各种有趣的内容。本期推荐的是一个添加、提取图片盲水印的 Python 工具—— Blind Watermark。
blind_watermark 是一个可以添加、提取图片盲水印的 Python 工具,支持添加数字、嵌入图片、嵌入文本、嵌入二进制四种方式。可以防止旋转角度、随机截图、多遮挡、纵向裁剪、横向裁剪、缩放攻击等效果。
安装
pip install blind-watermark
或者安装最新开发版本
git clone git@github.com:guofei9987/blind_watermark.git
cd blind_watermark
pip install .
如何使用
命令行使用
# 嵌入水印:
blind_watermark --embed --pwd 1234 examples/pic/ori_img.jpeg "watermark text" examples/output/embedded.png
# 提取水印:
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)
各种攻击后的效果
嵌入图片
嵌入:
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', )
隐水印还可以是二进制数据
如果要嵌入是如下长度为6的二进制数据:
wm = [True, False, True, True, True, False]
嵌入水印:
# 除了嵌入图片,也可以嵌入比特类数据
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/打上水印的图.png')
解水印:(注意设定水印形状 wm_shape)
bwm1 = WaterMark(password_img=1, password_wm=1, wm_shape=6)
wm_extract = bwm1.extract('output/打上水印的图.png', mode='bit')
print(wm_extract)
解出的水印是一个0~1之间的实数,方便用户自行卡阈值。如果水印信息量远小于图片可容纳量,偏差极小。
-END-
开源协议:MIT
开源地址:https://github.com/guofei9987/blind_watermark
原文始发于微信公众号(开源技术专栏):图片盲水印,提取水印无须原图!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/66156.html