当前位置: 代码网 > it编程>前端脚本>Python > 使用Python简单实现去除彩色水印

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

2025年02月21日 Python 我要评论
有一张下面这样的彩色图片,白底黑字上有蓝色水印:用photoshop之类软件处理特别麻烦,上网找去背景网站消除或者相关ai工具效果也不一定好,特别是如果这种图片有一整本数百页的书,那就更麻烦。考虑到这

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

用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去除彩色水印内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com