Python 数字图片盲水印

article/2025/11/7 13:45:01

blind-watermark

基于傅里叶变换的数字盲水印

  • 文档: https://BlindWatermark.github.io/blind_watermark/#/zh/
  • Source code: https://github.com/guofei9987/blind_watermark

install

pip install blind-watermark

For the current developer version:

git clone git@github.com:guofei9987/blind_watermark.git
cd blind_watermark
pip install .

如何使用

嵌入水印

from blind_watermark import WaterMarkbwm1 = WaterMark(password_wm=1, password_img=1)# 读取原图
bwm1.read_ori_img('pic/原图.jpg')# 读取水印
bwm1.read_wm('pic/水印.png')# 打上盲水印
bwm1.embed('output/打上水印的图.png')

提取水印

from blind_watermark import WaterMarkbwm1 = WaterMark(4399, 2333, 36, 20, wm_shape=(128, 128))
# 注意需要设定水印的长宽wm_shape
bwm1.extract('output/打上水印的图.png', 'output/解出的水印.png')

效果展示

原图水印
水印
嵌入后的图提取的水印
提取的水印

各种攻击后的效果

攻击方式攻击后的图片提取的水印
旋转攻击45度
旋转攻击.py
多遮挡
多遮挡攻击.py
多遮挡_提取水印
横向裁剪50%
横向裁剪攻击.py
纵向裁剪50%
缩放攻击(1200X1920->600X800)
椒盐攻击
亮度提升攻击
亮度降低攻击

嵌入字符串

嵌入:

from blind_watermark import WaterMarkbwm1 = 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 开源万岁!

隐水印还可以是二进制数据

作为 demo, 如果要嵌入是如下长度为6的二进制数据

wm = [True, False, True, True, True, False]

嵌入水印

# 除了嵌入图片,也可以嵌入比特类数据
from blind_watermark import WaterMarkbwm1 = WaterMark(password_img=1, password_wm=1)
bwm1.read_ori_img('pic/原图.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之间的实数,方便用户自行卡阈值。实测偏差极小。


http://chatgpt.dhexx.cn/article/jDVeShIl.shtml

相关文章

watermark前端js盲水印添加方法

1,引入js <script src"/Public/js/watermark-dom/watermark.js" language"JavaScript"></script> 2,实例化对象 <script language"JavaScript"> //参数详情请参考watermark.js 文件里的说明 window.onload function(){wate…

给你的web页面添加盲水印,附带检盲水印方案

应用场景 在一些敏感系统有的时候我们为了防止别人截图或追溯图片源头是谁发的。我们需要在页面上埋下我们的隐形水印。 开始做 埋水印 github上有很多水印的js插件&#xff0c;download下来一个改一改&#xff0c;源码见最后附录。 改动内容&#xff1a;增加了判断dom被人…

有意思的数字盲水印的简单的实现。

早期大约是10年前从一本数字图像处理上看到过数字水印的概念&#xff0c;觉得确实一种很有意思的东西&#xff0c;那个时候主要就是基于LSB的图像信息的隐藏&#xff0c;这种在空域里的方法有较大的缺陷&#xff0c;鲁棒性是比较差的。随便一个后期的都会造成水印的丢失&#x…

python脚本实现盲水印提取和添加

python脚本实现盲水印提取和添加 首先github上找个BlindWaterMark-master文件下载一下&#xff0c;打开后是我这个样子 在python里面添加两个库&#xff0c;python.exe目录上方输入cmd pip install opencv-python python.exe -m pip install matplotlib新手这里装库的时候&am…

文字隐写术-盲水印研究笔记

gitee 开源代码(java) shuiyin: blind watermark 盲水印技术实现 java 实现版权保护 - Gitee.comhttps://gitee.com/chejiangyi/shuiyin/tree/master 需求概述 研究盲水印对于版权保护的效果和能力 研究尝试概述 水印实现: 大部分的python或者java算法都基于频域的盲水印效果…

web系统添加盲水印

前言 为增加系统安全性&#xff0c;避免重要敏感信息通过截图方式泄露&#xff0c;对web页面增加盲水印标识&#xff0c;标注系统名称&#xff0c;登陆人&#xff0c;当前时间等信息&#xff0c;这里的盲水印指肉眼不可见的html水印 增加水印 引入watermark.js调用 watermar…

【OpenCV 例程 300篇】219. 添加数字水印(盲水印)

OpenCV 例程200篇 总目录 【youcans 的 OpenCV 例程 300篇】219. 添加数字水印&#xff08;盲水印&#xff09; 8.2 添加数字盲水印 数字水印&#xff0c;是指将特征信息嵌入音频、图像或是视频等数字信号中。 数字水印分为明水印和盲水印&#xff08;blind watermark&#…

照片里的盲水印

这个题是安恒月赛里面的一道misc类型的题&#xff0c;在CTF中misc所谓最考验你的脑洞和检验你的赛事水平&#xff08;赛棍&#xff1f;&#xff1f;&#xff1f;&#xff09; 但是这个方面还是要看一下&#xff0c;就当做开发脑力了。 题目&#xff1a;暴力可解 题目文件 下载…

[python] 基于blind-watermark库添加图片盲水印

blind-watermark是一个能够给图片添加/解析基于频域的数字盲水印的Python库。图像水印image watermark是指在图片里添加文本或图形&#xff0c;以标记图片的来源。但是图像水印会破坏原图。因此另外一种水印形式&#xff0c;即图像盲水印blind image watermark在实践中更多地用…

图片盲水印软件

bulid_watermark_gui Blind&Invisible Watermark &#xff08;图片盲水印&#xff0c;提取水印无须原图&#xff01;) 增加图形界面 项目地址&#xff1a;github开源 软件下载地址&#xff1a;无需环境软件下载 how to use pip install -r requirements.txt 运行main.py…

隐写术(盲水印):从入门到出门

0. 前言 我在做 Blind Watermark 这个库的时候&#xff0c;翻阅了大量材料&#xff0c;学到了关于隐写术、盲水印的很多知识&#xff0c;现在梳理了一遍&#xff0c;发出来。 本文结构&#xff1a; 简介&#xff1a;隐写术的应用场景、分类、特点隐写术&#xff1a;介绍几种…

图片隐写,盲水印,加密logo

1.定义 隐写术算是一种加密技术&#xff0c;权威的 wiki 说法是“ 隐写术是一门关于信息隐藏的技巧与科学&#xff0c;所谓信息隐藏指的是不让除预期的接收者之外的任何人知晓信息的传递事件或者信息的内容。” example&#xff1a; 钱图&#xff08;钱上面的水印&#xff0…

CTF盲水印详解

原创稿件征集 邮箱&#xff1a;eduantvsion.com QQ&#xff1a;3200599554 黑客极客技术、信息安全热点安全研究分析等安全相关的技术文章 稿件通过并发布还能收获 200-800元不等的稿酬 前言 在CTF杂项题型中&#xff0c;盲水印的出现频率是相当高的&#xff0c;但大多数人处于…

盲水印(Blind-WaterMark)

盲水印是一种肉眼不可见的水印方式&#xff0c;对图片资源使用图片盲水印或者文字水印&#xff0c;借此避免数字媒体未经授权的复制和拷贝&#xff0c;可通过对原图进行解码操作&#xff0c;得到水印图来证明版权归属。 这类盲水印是怎样实现的呢&#xff1f;原理并不复杂&…

Windows系统通过CMD连接MySql

1.按压WindowsR快捷键后输入"cmd" 2.点击"确定"按钮后打开命令行 3.通过输入"cd"MySql安装的bin目录&#xff0c;按压"Enter"后进入MySql安装的bin目录 4.输入"mysql -h localhost -u root -p"&#xff0c;此处-h后为对应ho…

cmd中无法连接MySQL

本人电脑是win10系统&#xff0c;安装的是MySQL5.7版本的&#xff0c;最近在登录MySQL的时候老师出现下面的错误&#xff0c;有的时候重启电脑耶也会出现这样的情况 1.先检查你的环境变量是否配置好了&#xff1b; &#xff08;如果没有配置好&#xff0c;请参考一下的步骤&am…

如何使用cmd安装MySQL

步骤一&#xff1a; 在官网MySQL&#xff1a; 点击download显示下载页面&#xff1a; 点击 MySQL community download&#xff08;这个适个人合开发者&#xff0c;免费的&#xff0c;之前的MySQL Enterprise Edition是企业版付费需要 &#xff0c;MySQL cluster CGE 是免费版但…

navicat或者cmd远程连接mysql数据库

问题产生&#xff1a; 一般情况下&#xff0c;MySql数据库是不允许进行远程连接操作的&#xff0c;强行使用Navicat连接会报出下面的错误。 服务器连接错误主机XXX不允许连接到此的MySQL的服务器 方法步骤&#xff1a; 1、远程登录授权 在服务器端进行操作&#xff0c;下…

cmd窗口无法连接MySQL的解决方法

1.将下载Mysql中的bin目录的路径配置到Path环境变量中&#xff1b; 2.winR&#xff0c;输入services.msc&#xff0c;到服务窗口找到mysql服务&#xff0c;其中mysql的服务名可能是mysqlxx而不是mysql&#xff0c;比如我的是mysql80&#xff0c;找到之后点击&#xff0c;然后在…

cmd启动MySQL

命令行启动MySQL step1&#xff1a;打开命令行&#xff1a;win R step2&#xff1a;输入如下命令&#xff0c;root与1234分别为MySQL的用户名与密码 mysql -uroot -p1234出现如下信息即为启动成功 如果连接失败 显示如下错误信息&#xff1a; ERROR 2003 (HY000): Cant …