Python中的盲水印

blind-watermark的Python项目详细描述


盲水印

基于小波变换的盲水印。在

PyPIBuild StatuscodecovLicensePythonPlatformDownloadsJoin the chat at https://gitter.im/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 imagewatermark
origin_imagewatermark
^{tb2}$

对嵌入图像的攻击

^{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。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何使用Ibatis在插入时返回ID(使用返回关键字)   java(org.hibernate.TransactionException)org。冬眠TransactionException:事务未成功启动   java小程序jwindow始终位于JNLP顶部   在Java中重新解析JSON对象?   java单击后将ListView数据移动到新屏幕   Mule ESB中的java WSA寻址特性   Java,对象编程:获取返回0值的方法   hibernate的Java通用问题,如何处理T get(K id)   java在使用超级CSV读取CSV时忽略引用   ssh使用Java远程运行命令   java如何向具体用户发送websocket消息?   在JAVA中,我可以在不指定的情况下使用条件运算符吗?