Python中的盲水印
blind-watermark的Python项目详细描述
盲水印
基于小波变换的盲水印。在
- 文档:https://BlindWatermark.github.io/blind_watermark/#/en/
- 语言:https://BlindWatermark.github.io/blind_watermark/#/zh/
- 源代码:https://github.com/guofei9987/blind_watermark
安装
pip install blind-watermark
对于当前的开发人员版本:
^{pr2}$如何使用
如何嵌入水印:
fromblind_watermarkimportWaterMarkbwm1=WaterMark(password_wm=1,password_img=1)# read original imagebwm1.read_img('pic/ori_img.jpg')# read watermarkbwm1.read_wm('pic/watermark.png')# embedbwm1.embed('output/embedded.png')
如何提取水印
bwm1=WaterMark(password_wm=1,password_img=1)# notice that wm_shape is necessarybwm1.extract(filename='output/embedded.png',wm_shape=(128,128),out_wm_name='output/extracted.png',)
演示:
origin image | watermark |
---|---|
对嵌入图像的攻击
^{3}$嵌入字符串
嵌入:
fromblind_watermarkimportWaterMarkbwm1=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)
嵌入位数组
作为演示,我们嵌入了6字节的数据:
wm=[True,False,True,True,True,False]
嵌入:
fromblind_watermarkimportWaterMarkbwm1=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')
摘录:
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
是一个float数组。设置阈值,例如0.5。在
- 项目
标签: