当前位置: 首页 > news >正文

【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 检测图像中(色差对比度较大)的水印

我已经从你的 全世界路过 像一颗流星 划过命运 的天空 很多话忍住了 不能说出口 珍藏在 我的心中 只留下一些回忆 &#x1f3b5; 牛奶咖啡《从你的全世界路过》 前言 在图像处理领域中&#xff0c;检测图像中的水印是一项重要任务。水印通常用于保护图像…...

最短路:Bellman-Ford

最短路&#xff1a;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…...

深度学习的分类网络

深度学习的分类网络 深度学习的分类网络&#xff08;Classification Networks&#xff09;是用于将输入数据分配到预定义类别的神经网络。它们广泛应用于图像分类、文本分类、语音识别等任务。以下是对深度学习分类网络的详细介绍&#xff0c;包括其基本概念、主要架构、常见模…...

Si24R05—高度集成的低功耗 2.4G+125K SoC 芯片

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

layuimini框架实现点击菜单栏回到起始页

在layui页面中&#xff0c;如果使用了 window.location.href""进行了页面跳转&#xff0c;再点击菜单栏是不会显示起始页&#xff0c;而是跳转后的页面&#xff0c; 解决&#xff1a; 在miniTab.js文件中找到&#xff1a;listen方法 将其中修改为&#xff1a; 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 中的反射大家都不陌生&#xff0c;有很多很好的文章都进行了讲解&#xff0c;但是很难找到一篇文章能完全解释反射的所有用法&#xff0c;特别是反射获取这个对象的注解的信息和泛型信息&#xff0c;往往都停留在了获取类的函数、方法&#xff0c;构造上。所以这篇文…...

2024年适合学生写作业的台灯推荐:五款公认好用的护眼台灯

儿童的视力健康是每一个家庭都极为关注的问题。目前中国近视率居高不下&#xff0c;且呈现出年轻化、低龄化的趋势。儿童近视的问题愈发严重&#xff0c;如何才能让孩子在学习的同时&#xff0c;眼睛也能得到充分的保护&#xff1f;答案就是护眼台灯。护眼台灯通常拥有柔和的光…...

电商平台API电商平台数据传输(商品订单店铺数据采集)

API&#xff08;Application Programming Interface&#xff09;是一种用于应用程序之间相互通信和交互的接口。它定义了一组规范和协议&#xff0c;允许软件系统之间传递数据和请求服务。 API的基本概念包括&#xff1a; 1. 接口&#xff1a;API作为接口&#xff0c;提供了一…...

【LeetCode每日一题】3067. 在带权树网络中统计可连接服务器对数目-DFS和图

Hey我的编程小伙伴们&#x1f44b;&#xff0c;今天我要和大家分享一道我在LeetCode上遇到的超有趣的题目——编号3067的在带权树网络中统计可连接服务器对数目。这是一道非常适合练习DFS和图的题目哦&#xff01;&#x1f913;&#x1f4bb; 邻接图是什么&#xff1f; 在我们…...

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的正式上线&#xff0c;国内大模型产品又添一员。近年来&#xff0c;随着人工智能技术的快速发展&#xff0c;AIGC&#xff08;AI生成内容&#xff09;产品逐渐成为技术与商业应用的热点。各大互联网厂商纷纷推出自己的大模型产品&#xff0c;以期在这…...

记录一个apisix修改后台接口超时时间的方法

垃圾程序猿搞了个数据导入&#xff0c;解析校验比较复杂&#xff0c;1000条就要70秒。apisix默认60s超时&#xff0c;导致提交导入功能总是失败。 非要先调整超时时间。这里记录一下 到服务器配置yaml如下&#xff1a; apiVersion: apisix.apache.org/v2 kind: ApisixUpstrea…...

地产样板间vr全景云展平台降低售房压力

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

性能测试2【搬代码】

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

Chromium源码阅读:深入理解Mojo框架的设计思想,并掌握其基本用法(1)

Mojo简介 Mojo 是一个运行时库的集合&#xff0c;提供与平台无关的通用 IPC 原语抽象、消息 IDL 格式以及具有针对多种目标语言的代码生成的绑定库&#xff0c;以便于跨任意进程间和进程内边界传递消息。 Mojo 分为清晰分离的层&#xff0c;子组件的基本层次结构如下&#xff…...

通用大模型VS垂直大模型对比

通用大模型和垂直大模型的区分主要在于它们的设计目的、应用范围、训练数据、优化目标和使用场景。以下是一些关键点&#xff0c;用以区分这两种模型&#xff1a; 设计目的&#xff1a; 通用大模型&#xff1a;设计用于处理多种类型的任务&#xff0c;不特定于某一领域。垂直大…...

时尚解决方案来袭:几分钟即可生成高清商拍大片

在时尚行业&#xff0c;视觉展示的重要性不可小觑。商品图片不仅代表品牌的风格调性&#xff0c;而且直接影响消费者的购买行为。可以说&#xff0c;视觉营销在服装行业中的地位至关重要。 尽管如此&#xff0c;视觉营销的传统产出渠道——商业摄影&#xff0c;因其高成本、复杂…...

【每日一练】day1

✨✨谢谢大家捧场&#xff0c;祝屏幕前的小伙伴们每天都有好运相伴左右&#xff0c;一定要天天开心哦&#xff01;✨✨ &#x1f388;&#x1f388;作者主页&#xff1a; &#x1f388;丠丠64-CSDN博客&#x1f388; ✨✨ 帅哥美女们&#xff0c;我们共同加油&#xff01;一起…...

GA/T 1400 (非标)视图库网关

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

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…...

Flask RESTful 示例

目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题&#xff1a; 下面创建一个简单的Flask RESTful API示例。首先&#xff0c;我们需要创建环境&#xff0c;安装必要的依赖&#xff0c;然后…...

微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】

微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来&#xff0c;Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...

JavaScript 中的 ES|QL:利用 Apache Arrow 工具

作者&#xff1a;来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗&#xff1f;了解下一期 Elasticsearch Engineer 培训的时间吧&#xff01; Elasticsearch 拥有众多新功能&#xff0c;助你为自己…...

大数据零基础学习day1之环境准备和大数据初步理解

学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 &#xff08;1&#xff09;设置网关 打开VMware虚拟机&#xff0c;点击编辑…...

最新SpringBoot+SpringCloud+Nacos微服务框架分享

文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的&#xff0c;根据Excel列的需求预估的工时直接打骨折&#xff0c;不要问我为什么&#xff0c;主要…...

【算法训练营Day07】字符串part1

文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接&#xff1a;344. 反转字符串 双指针法&#xff0c;两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...

python如何将word的doc另存为docx

将 DOCX 文件另存为 DOCX 格式&#xff08;Python 实现&#xff09; 在 Python 中&#xff0c;你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是&#xff0c;.doc 是旧的 Word 格式&#xff0c;而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...

用docker来安装部署freeswitch记录

今天刚才测试一个callcenter的项目&#xff0c;所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...

GC1808高性能24位立体声音频ADC芯片解析

1. 芯片概述 GC1808是一款24位立体声音频模数转换器&#xff08;ADC&#xff09;&#xff0c;支持8kHz~96kHz采样率&#xff0c;集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器&#xff0c;适用于高保真音频采集场景。 2. 核心特性 高精度&#xff1a;24位分辨率&#xff0c…...