使用Python简单实现去除彩色水印

 更新时间:2025年02月21日 08:51:02   作者:yivifu  
这篇文章主要为大家详细介绍了如何使用Python简单实现去除彩色水印效果,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下

有一张下面这样的彩色图片,白底黑字上有蓝色水印:

用photoshop之类软件处理特别麻烦,上网找去背景网站消除或者相关AI工具效果也不一定好,特别是如果这种图片有一整本数百页的书,那就更麻烦。考虑到这种水印的颜色与文字相比差异很大,因此,可以考虑利用OpenCV将其转换为hsv模式,这时候会发现水印部分的v值比文字部分的v值(可以在gimp或者photoshop中查看)大得多,用python代码处理起来就很方便了。如下代码可将上面的示例图片中的蓝色水印消除:

import cv2
import numpy as np
 
def remove_color_watermark(image_path, thres):
 
    """    
        :param image_path: 图片路径
        :param thres: V值的阈值
        :return: 除掉水印后的图片
    """
 
    # 读取图片
    img = cv2.imread(image_path)
    if img is None:
        print("无法读取图片,请检查图片路径。")
        return
 
    # 转换到HSV颜色空间
    hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
    # 某像素点的V值大于阈值则将其转换为白色
    img[hsv[:, :, 2] > thres ] = [255, 255, 255]
    return img
 
# 请替换为你的图片路径
image_path = f"path\\to\\orig\\img.jpg"
result = remove_color_watermark(image_path, 230)
 
if result is not None:
    # 显示原始图片和处理后的图片
    cv2.imshow('Original Image', cv2.imread(image_path))
    cv2.imshow('Processed Image', result)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
 
    # 保存处理后的图片
    cv2.imwrite('processed_image.jpg', result)

处理效果如下:

似乎还是很不错的。下面的代码可以将整个文件夹中所有相同水印的图片处理后输出为一个pdf文件:

import cv2
import os
 
from PIL import Image
 
def remove_color_watermark(image_path, thres):
 
    # 读取图片
    img = cv2.imread(image_path)
    if img is None:
        print("无法读取图片,请检查图片路径。")
        return
 
    # 转换到HSV颜色空间
    hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
    # 某像素点的v值大于阈值则将其转换为白色
    img[hsv[:, :, 2] > thres] = [255, 255, 255]
    return img
 
 
if __name__ == '__main__':
    image_path = 'folder\\path\\to\\orig'
    out_path = 'path\\to\\output\\folder'
    thresh = 230
    images = []
    for filename in os.listdir(image_path):
        if filename.endswith(('.jpg', '.jpeg', '.png', '.bmp', '.tiff')):
            img = remove_color_watermark(os.path.join(image_path, filename), thresh)
            img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
            # OpenCV图片转换为pillow图片
            pillow_image = Image.fromarray(img)
            print(f'{filename}已经处理完毕。')
            # 加入pillow图片数组,为输出PDF文件做准备
            images.append(pillow_image)
    # 将处理后的图片输出为PDF文件
    images[0].save(os.path.join(out_path,'output.pdf'), save_all=True, append_images=images[1:])

到此这篇关于使用Python简单实现去除彩色水印的文章就介绍到这了,更多相关Python去除彩色水印内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python使用sessions模拟登录淘宝的方式

    python使用sessions模拟登录淘宝的方式

    这篇文章主要介绍了python使用sessions模拟登录淘宝的方式,本文给大家介绍的非常详细,具有一定的参考借鉴价值 ,需要的朋友可以参考下
    2019-08-08
  • Python CSV模块使用实例

    Python CSV模块使用实例

    这篇文章主要介绍了Python CSV模块使用实例,本文将举几个例子来介绍一下Python的CSV模块的使用方法,包括reader、writer、DictReader、DictWriter.register_dialect等,需要的朋友可以参考下
    2015-04-04
  • Python+OpenCV内置方法实现行人检测

    Python+OpenCV内置方法实现行人检测

    OpenCV附带一个预训练的HOG+线性SVM模型,可用于在图像和视频流中执行行人检测。本文我们将使用Opencv自带的模型实现对视频流中的行人检测。感兴趣的小伙伴可以跟随小编一起学习一下
    2021-12-12
  • 拓扑排序Python实现的过程

    拓扑排序Python实现的过程

    这篇文章主要介绍了拓扑排序Python实现的过程,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-01-01
  • python中的集合及集合常用的使用方法

    python中的集合及集合常用的使用方法

    这篇文章主要介绍了python中的集合及集合常用的使用方法,集合是一个无序的不重复元素序列,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的朋友可以参考一下
    2022-07-07
  • LeetCode189轮转数组python示例

    LeetCode189轮转数组python示例

    这篇文章主要为大家介绍了LeetCode189轮转数组python解法示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • Django跨域请求CSRF的方法示例

    Django跨域请求CSRF的方法示例

    这篇文章主要介绍了Django跨域请求CSRF的方法示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-11-11
  • Python数据可视化之Seaborn的使用详解

    Python数据可视化之Seaborn的使用详解

    Seaborn库是python中基于matplotlib库的可视化工具库,通过sns我们可以更方便地绘制出更美观的图表。本文将分享python基于Seaborn库的一系列绘图操作,感兴趣的可以了解一下
    2022-04-04
  • pytest利用request fixture实现个性化测试需求详解

    pytest利用request fixture实现个性化测试需求详解

    这篇文章主要为大家详细介绍了pytest如何利用request fixture实现个性化测试需求,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起了解一下
    2023-09-09
  • 使用python读写txt和json(jsonl)大文件的方法步骤

    使用python读写txt和json(jsonl)大文件的方法步骤

    在Python中读取txt和json(jsonl)大文件并保存到字典是一项非常常见的操作,这篇文章主要给大家介绍了关于使用python读写txt和json(jsonl)大文件的方法步骤,需要的朋友可以参考下
    2023-12-12

最新评论