淘宝做网站的都是模板,哪里学做网站,wordpress添加工具栏,高唐企业建网站服务商我已经从你的 全世界路过 像一颗流星 划过命运 的天空 很多话忍住了 不能说出口 珍藏在 我的心中 只留下一些回忆 #x1f3b5; 牛奶咖啡《从你的全世界路过》 前言
在图像处理领域中#xff0c;检测图像中的水印是一项重要任务。水印通常用于保护图像…
我已经从你的 全世界路过 像一颗流星 划过命运 的天空 很多话忍住了 不能说出口 珍藏在 我的心中 只留下一些回忆 牛奶咖啡《从你的全世界路过》 前言
在图像处理领域中检测图像中的水印是一项重要任务。水印通常用于保护图像版权但在某些情况下识别和去除水印也非常重要。在这篇博客中我们将展示如何使用 Python 及其相关库如PIL和Pandas来检测图像中的水印。
环境准备
在开始之前请确保你已经安装了以下库
PillowPandasNumpy 你可以使用以下命令安装这些库
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_threshold10):return abs(r - g) gray_threshold and abs(g - b) gray_threshold and abs(r - b) gray_thresholddef detect_watermark(image_path, threshold0.2, fixed_size(800, 600), gray_threshold10):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), axis1))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(fImage: {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及其相关库来检测图像中的水印。该方法通过识别非黑白灰色像素并计算这些像素的比例来判断图像中是否存在水印。你可以根据具体需求调整阈值以提高检测的准确性。
希望这篇文章对你有所帮助。如果有任何问题或建议欢迎在评论区留言讨论。