+-
blind_watermark
“
图片盲水印,提取水印无须原图!
很早之前就分享过,一年多没更新了,怎么项目最近热度噌噌噌地长,是厂商都在搞图片盲水印了吗?然后各大文生图平台开始溯源了?
Github地址
https://github.com/guofei9987/blind_watermark
项目功能
- 核心功能
:实现图片盲水印的嵌入和提取,无需原图即可提取水印。
- 支持的水印类型:
-
文本水印:支持将文本信息嵌入图片中,并从受攻击后的图片中提取。
-
图片水印:支持将图片作为水印嵌入到另一张图片中,并提取。
-
比特流水印:支持将比特流(如二进制数据)嵌入图片中,并提取。
- 抗攻击能力
:项目展示了对多种常见攻击(如旋转、裁剪、遮挡、缩放、加噪、亮度调整等)的鲁棒性,即使图片经过攻击,仍能提取出完整的水印信息。
安装
-
通过PyPI安装:
pip install blind-watermark -
安装开发版本:
[email protected]:guofei9987/blind_watermark.git
cdblind_watermark
pip install .
使用方法
在命令行中使用
-
嵌入水印:
blind_watermark --embed --pwd1234 examples/pic/ori_img.jpeg"watermark text"examples/output/embedded.png -
提取水印:
blind_watermark --extract --pwd1234 --wm_shape 111 examples/output/embedded.png
-
嵌入文本水印:
fromblind_watermarkimportWaterMark
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) -
嵌入图片水印:
fromblind_watermarkimportWaterMark
bwm1 = WaterMark(password_wm=1, password_img=1)
bwm1.read_ori_img('pic/ori_img.jpg')
bwm1.read_wm('pic/watermark.png')
bwm1.embed('output/embedded.png') -
提取图片水印:
bwm1 = WaterMark(password_wm=1, password_img=1)
bwm1.extract(filename='output/embedded.png', wm_shape=(128,128), out_wm_name='output/extracted.png')