【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等优点。 视图库网关…...
【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型
摘要 拍照搜题系统采用“三层管道(多模态 OCR → 语义检索 → 答案渲染)、两级检索(倒排 BM25 向量 HNSW)并以大语言模型兜底”的整体框架: 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后,分别用…...
Flask RESTful 示例
目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题: 下面创建一个简单的Flask RESTful API示例。首先,我们需要创建环境,安装必要的依赖,然后…...
微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】
微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来,Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...
JavaScript 中的 ES|QL:利用 Apache Arrow 工具
作者:来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗?了解下一期 Elasticsearch Engineer 培训的时间吧! Elasticsearch 拥有众多新功能,助你为自己…...
大数据零基础学习day1之环境准备和大数据初步理解
学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 (1)设置网关 打开VMware虚拟机,点击编辑…...
最新SpringBoot+SpringCloud+Nacos微服务框架分享
文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的,根据Excel列的需求预估的工时直接打骨折,不要问我为什么,主要…...
【算法训练营Day07】字符串part1
文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接:344. 反转字符串 双指针法,两个指针的元素直接调转即可 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 格式(Python 实现) 在 Python 中,你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是,.doc 是旧的 Word 格式,而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...
用docker来安装部署freeswitch记录
今天刚才测试一个callcenter的项目,所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...
GC1808高性能24位立体声音频ADC芯片解析
1. 芯片概述 GC1808是一款24位立体声音频模数转换器(ADC),支持8kHz~96kHz采样率,集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器,适用于高保真音频采集场景。 2. 核心特性 高精度:24位分辨率,…...
