【Python】使用 Python 检测图像中(色差对比度较大)的水印
我已经从你的 全世界路过
像一颗流星 划过命运 的天空
很多话忍住了 不能说出口
珍藏在 我的心中
只留下一些回忆
🎵 牛奶咖啡《从你的全世界路过》
前言
在图像处理领域中,检测图像中的水印是一项重要任务。水印通常用于保护图像版权,但在某些情况下,识别和去除水印也非常重要。在这篇博客中,我们将展示如何使用 Python 及其相关库(如PIL和Pandas)来检测图像中的水印。
环境准备
在开始之前,请确保你已经安装了以下库:
- Pillow
- Pandas
- Numpy
你可以使用以下命令安装这些库:
pip install pillow pandas numpy
代码实现
以下是完整的代码实现,展示了如何读取图像、转换为灰度图像、调整大小、识别非黑白灰色像素,并计算这些像素的比例以判断图像中是否存在水印。
# -*- coding:utf-8 -*-
# @author: xrx
# @time: 2024/6/12 13:57
# @project: SH4NH4I
# @file: main.py
# @software: PyCharm
# desc:
import pandas as pd
import numpy as np
from PIL import Imagedef is_gray_pixel(r, g, b, gray_threshold=10):return abs(r - g) < gray_threshold and abs(g - b) < gray_threshold and abs(r - b) < gray_thresholddef detect_watermark(image_path, threshold=0.2, fixed_size=(800, 600), gray_threshold=10):image = Image.open(image_path)image = image.convert("RGB")image = image.resize(fixed_size)data = np.array(image)height, width, _ = data.shapedf = pd.DataFrame({'R': data[:, :, 0].flatten(),'G': data[:, :, 1].flatten(),'B': data[:, :, 2].flatten()})df['is_color'] = ~((df['R'] == 0) & (df['G'] == 0) & (df['B'] == 0) |(df['R'] == 255) & (df['G'] == 255) & (df['B'] == 255) |df.apply(lambda row: is_gray_pixel(row['R'], row['G'], row['B'], gray_threshold), axis=1))watermark_ratio = df['is_color'].mean()has_watermark = watermark_ratio > thresholdreturn has_watermark, watermark_ratio# 示例使用
image_paths = ["img.png", "img_1.png", "img_2.png", "img_3.png", "img_4.png"] # 替换为你的图像路径
for image_path in image_paths:has_watermark, watermark_ratio = detect_watermark(image_path)print(f"Image: {image_path}, Has watermark: {has_watermark}, Watermark ratio: {watermark_ratio:.4f}")
代码解释
is_gray_pixel函数:
该函数用于判断一个像素是否为灰色。通过比较R、G、B值之间的差异是否小于设定的阈值(gray_threshold),来确定该像素是否为灰色。
detect_watermark函数:
该函数用于检测图像中是否存在水印。具体步骤如下:
- 读取图像并转换为RGB格式。
- 将图像调整为固定大小,以便统一处理。
- 将图像数据转换为Pandas DataFrame。
- 识别非黑白灰色像素,并计算这些像素的比例。
- 判断非黑白灰色像素的比例是否超过设定的阈值(threshold),从而确定图像中是否存在水印。
示例使用:
通过循环处理多张图片,调用detect_watermark函数并输出结果。
实验结果
使用示例代码中的多张图片,检测结果如下:
Image: img.png, Has watermark: True, Watermark ratio: 0.0567
Image: img_1.png, Has watermark: False, Watermark ratio: 0.0032
Image: img_2.png, Has watermark: True, Watermark ratio: 0.0875
Image: img_3.png, Has watermark: False, Watermark ratio: 0.0104
Image: img_4.png, Has watermark: True, Watermark ratio: 0.0321
从结果可以看出,该方法能够有效检测图像中的水印,并输出水印的比例。
总结
通过本文,我们展示了如何使用Python及其相关库来检测图像中的水印。该方法通过识别非黑白灰色像素,并计算这些像素的比例,来判断图像中是否存在水印。你可以根据具体需求调整阈值,以提高检测的准确性。
希望这篇文章对你有所帮助。如果有任何问题或建议,欢迎在评论区留言讨论。
相关文章:
【Python】使用 Python 检测图像中(色差对比度较大)的水印
我已经从你的 全世界路过 像一颗流星 划过命运 的天空 很多话忍住了 不能说出口 珍藏在 我的心中 只留下一些回忆 🎵 牛奶咖啡《从你的全世界路过》 前言 在图像处理领域中,检测图像中的水印是一项重要任务。水印通常用于保护图像…...

最短路:Bellman-Ford
最短路:Bellman-Ford 题目描述参考代码 题目描述 输入样例 3 3 1 1 2 1 2 3 1 1 3 3输出样例 3参考代码 #include <iostream> #include <cstring> #include <algorithm>using namespace std;const int N 510, M 10010;int n, m, k; int dist…...
深度学习的分类网络
深度学习的分类网络 深度学习的分类网络(Classification Networks)是用于将输入数据分配到预定义类别的神经网络。它们广泛应用于图像分类、文本分类、语音识别等任务。以下是对深度学习分类网络的详细介绍,包括其基本概念、主要架构、常见模…...

Si24R05—高度集成的低功耗 2.4G+125K SoC 芯片
Si24R05是一款高度集成的低功耗SoC芯片,具有低功耗、Low Pin Count、宽电压工作范围,集成了13/14/15/16位精度的ADC、LVD、UART、SPI、I2C、TIMER、WUP、IWDG、RTC、无线收发器、3D低频唤醒接收器等丰富的外设。内核采用RISC-V RV32IMAC(2.6 …...

layuimini框架实现点击菜单栏回到起始页
在layui页面中,如果使用了 window.location.href""进行了页面跳转,再点击菜单栏是不会显示起始页,而是跳转后的页面, 解决: 在miniTab.js文件中找到:listen方法 将其中修改为: if …...

【ubuntu22.04~mysql-MHA-mycat】
ubuntu22.04~mysql-MHA-mycat 前言一、安装指定版本mysql-server(8.0.23)1、安装mysql2、启用修改mysql配置1、安装3、修改权限3.1、用户密码存放位置,3.2、创建用户root@%4、mysql配置文件my.cnf修改1、主节点my.cnf2、slave1~my.cnf修改项3、slave2~my.cnf修改项5、重启mys…...

Java Reflection 反射使用 完全指南
前言 Java 中的反射大家都不陌生,有很多很好的文章都进行了讲解,但是很难找到一篇文章能完全解释反射的所有用法,特别是反射获取这个对象的注解的信息和泛型信息,往往都停留在了获取类的函数、方法,构造上。所以这篇文…...

2024年适合学生写作业的台灯推荐:五款公认好用的护眼台灯
儿童的视力健康是每一个家庭都极为关注的问题。目前中国近视率居高不下,且呈现出年轻化、低龄化的趋势。儿童近视的问题愈发严重,如何才能让孩子在学习的同时,眼睛也能得到充分的保护?答案就是护眼台灯。护眼台灯通常拥有柔和的光…...

电商平台API电商平台数据传输(商品订单店铺数据采集)
API(Application Programming Interface)是一种用于应用程序之间相互通信和交互的接口。它定义了一组规范和协议,允许软件系统之间传递数据和请求服务。 API的基本概念包括: 1. 接口:API作为接口,提供了一…...
【LeetCode每日一题】3067. 在带权树网络中统计可连接服务器对数目-DFS和图
Hey我的编程小伙伴们👋,今天我要和大家分享一道我在LeetCode上遇到的超有趣的题目——编号3067的在带权树网络中统计可连接服务器对数目。这是一道非常适合练习DFS和图的题目哦!🤓💻 邻接图是什么? 在我们…...
java中的时间相关类
LocalDate: 用于表示日期。 public final class LocalDate {private final int year;private final int month;private final int day;}LocalTime: 用于表示时间。 public final class LocalTime {private final byte hour;private final byte minute;private final byte se…...

大模型的现状与未来:探索腾讯元宝APP及其他AIGC产品
前言 随着近日腾讯元宝APP的正式上线,国内大模型产品又添一员。近年来,随着人工智能技术的快速发展,AIGC(AI生成内容)产品逐渐成为技术与商业应用的热点。各大互联网厂商纷纷推出自己的大模型产品,以期在这…...
记录一个apisix修改后台接口超时时间的方法
垃圾程序猿搞了个数据导入,解析校验比较复杂,1000条就要70秒。apisix默认60s超时,导致提交导入功能总是失败。 非要先调整超时时间。这里记录一下 到服务器配置yaml如下: apiVersion: apisix.apache.org/v2 kind: ApisixUpstrea…...

地产样板间vr全景云展平台降低售房压力
在数字化浪潮的推动下,传统的实体展厅正面临着巨大的转型压力。高昂的搭建、物流、安保成本,以及展览的周期性和资源浪费,都成为了展商们不得不面对的难题。然而,现在有了商品3D线上展台搭建编辑器,这些问题都迎刃而解…...

性能测试2【搬代码】
1.性能测试脚本完善以及增强 2.jmeter插件安装以及监控使用 3.性能压测场景设置(基准、负载、压力、稳定性) 4. 无界面压测场景详解 一、性能测试脚本完善以及增强 使用控制器的目的是使我们的脚本更加接近真实的场景 1.逻辑控制器: 【事务控制器】&…...

Chromium源码阅读:深入理解Mojo框架的设计思想,并掌握其基本用法(1)
Mojo简介 Mojo 是一个运行时库的集合,提供与平台无关的通用 IPC 原语抽象、消息 IDL 格式以及具有针对多种目标语言的代码生成的绑定库,以便于跨任意进程间和进程内边界传递消息。 Mojo 分为清晰分离的层,子组件的基本层次结构如下ÿ…...
通用大模型VS垂直大模型对比
通用大模型和垂直大模型的区分主要在于它们的设计目的、应用范围、训练数据、优化目标和使用场景。以下是一些关键点,用以区分这两种模型: 设计目的: 通用大模型:设计用于处理多种类型的任务,不特定于某一领域。垂直大…...

时尚解决方案来袭:几分钟即可生成高清商拍大片
在时尚行业,视觉展示的重要性不可小觑。商品图片不仅代表品牌的风格调性,而且直接影响消费者的购买行为。可以说,视觉营销在服装行业中的地位至关重要。 尽管如此,视觉营销的传统产出渠道——商业摄影,因其高成本、复杂…...

【每日一练】day1
✨✨谢谢大家捧场,祝屏幕前的小伙伴们每天都有好运相伴左右,一定要天天开心哦!✨✨ 🎈🎈作者主页: 🎈丠丠64-CSDN博客🎈 ✨✨ 帅哥美女们,我们共同加油!一起…...

GA/T 1400 (非标)视图库网关
GA/T 1400 (非标)视图库网关 应用概述: GAT1400视图库网关产品是公司“分布式综合安防管理平台”下的子系统 针对以下遇到应用场景定制开发、优化后形成的网关产品,具备兼容性高、可扩展、可功能定制、可OEM等优点。 视图库网关…...

IDEA运行Tomcat出现乱码问题解决汇总
最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…...
反向工程与模型迁移:打造未来商品详情API的可持续创新体系
在电商行业蓬勃发展的当下,商品详情API作为连接电商平台与开发者、商家及用户的关键纽带,其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息(如名称、价格、库存等)的获取与展示,已难以满足市场对个性化、智能…...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件
在选煤厂、化工厂、钢铁厂等过程生产型企业,其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进,需提前预防假检、错检、漏检,推动智慧生产运维系统数据的流动和现场赋能应用。同时,…...

高频面试之3Zookeeper
高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个?3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制(过半机制࿰…...
生成 Git SSH 证书
🔑 1. 生成 SSH 密钥对 在终端(Windows 使用 Git Bash,Mac/Linux 使用 Terminal)执行命令: ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" 参数说明: -t rsa&#x…...

[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...
今日科技热点速览
🔥 今日科技热点速览 🎮 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售,主打更强图形性能与沉浸式体验,支持多模态交互,受到全球玩家热捧 。 🤖 人工智能持续突破 DeepSeek-R1&…...
Swagger和OpenApi的前世今生
Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章,二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑: 🔄 一、起源与初创期:Swagger的诞生(2010-2014) 核心…...

【网络安全】开源系统getshell漏洞挖掘
审计过程: 在入口文件admin/index.php中: 用户可以通过m,c,a等参数控制加载的文件和方法,在app/system/entrance.php中存在重点代码: 当M_TYPE system并且M_MODULE include时,会设置常量PATH_OWN_FILE为PATH_APP.M_T…...
日常一水C
多态 言简意赅:就是一个对象面对同一事件时做出的不同反应 而之前的继承中说过,当子类和父类的函数名相同时,会隐藏父类的同名函数转而调用子类的同名函数,如果要调用父类的同名函数,那么就需要对父类进行引用&#…...