很多小伙伴在去除图片上的水印时,会使用一些PS工具,或者使用第三方的小程序,但是PS工具需要一些操作技能,第三方的小程序很多都是收费的,而且会泄露图片信息!其实还可以使用python来去除水印,以下是Python去除图片文字水印的3种主流方案及实现代码,综合了Open CV、Pillow和专用库的解决方案:#python##python自学##python教程##opencv#
一、简单水印处理(OpenCV亮度过滤)
适用于白底灰色水印场景,通过亮度阈值分离水印。
关键点:阈值220需根据水印灰度调整,适用于白底灰字水印。
import cv2
import numpy as np
def remove_watermark(image_path, output_path):
img = cv2.imread(image_path)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
_, binary = cv2.threshold(gray, 220, 255, cv2.THRESH_BINARY_INV) # 调整220为最佳阈值
cv2.imwrite(output_path, cv2.bitwise_not(binary))
remove_watermark("watermarked.jpg", "clean.jpg")
二、复杂水印处理(区域修复)
对非均匀背景水印,采用图像修复技术
需手动制作水印区域的掩膜图(PNG透明通道或黑白图)
cv2
def remove_watermark(image_path, mask_path, output_path):
img = cv2.imread(image_path)
mask = cv2.imread(mask_path, 0) # 黑白掩膜图(水印区域为白色)
result = cv2.inpaint(img, mask, 3, cv2.INPAINT_TELEA) # 修复半径设为3
cv2.imwrite(output_path, result)
remove_watermark("input.jpg", "mask.png", "output.jpg")
三、专用库快速处理(poimage)
针对公众号等平台水印的一键解决方案
# 安装:pip install poimage
import poimage
poimage.del_watermark(
input_image="watermarked.jpg",
output_image="clean.jpg" # 自动识别常见半透明水印
)