You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

去除图片水印后Matplotlib显示出现蓝色偏色的问题排查及通用去水印方案求助

去除图片水印后Matplotlib显示出现蓝色偏色的问题排查及通用去水印方案求助

我正在做一个教育类项目,需要移除一些STEM相关图片背景里的特定水印。最开始我尝试处理下面这张图:

带有examgoal水印的原图

你可能需要放大才能看到,水印内容是“examgoal”。

不过不知道出了什么问题,我得到的输出虽然勉强(效果很差)去掉了水印,但整体画面偏蓝。我已经折腾好几个小时了,还是找不到解决办法:

处理后偏蓝色的结果图

我在Google Colab上运行了以下代码,用到了matplotlib、numpy和cv2,代码确实能(虽然效果很差)去掉水印,但偏色问题一直解决不了,而且我还想把这个流程通用化,用来处理多张图片,真心希望能得到大家的帮助!

import cv2
import numpy as np
import matplotlib.pyplot as plt
from google.colab import files

uploaded = files.upload()
for filename in uploaded.keys():
    print(f'Uploaded file name: {filename}')
image_path = filename
image = cv2.imread(image_path)


if image is None:
    print(f"Error: Unable to load image at {image_path}")
else:
    print("Image loaded successfully")


gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
enhanced = cv2.equalizeHist(gray)
adaptive_thresh = cv2.adaptiveThreshold(enhanced, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C,
                                        cv2.THRESH_BINARY_INV, 11, 2)
kernel = np.ones((3, 3), np.uint8)
morph = cv2.morphologyEx(adaptive_thresh, cv2.MORPH_CLOSE, kernel, iterations=2)
mask = cv2.bitwise_not(morph)
result = cv2.inpaint(image, mask, 3, cv2.INPAINT_TELEA)
plt.figure(figsize=(15, 15))
plt.subplot(1, 2, 1)
plt.title('Original Image')
plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
plt.subplot(1, 2, 2)
plt.title('Image without Watermark')
plt.imshow(cv2.cvtColor(result, cv2.COLOR_BGR2RGB))
plt.show()

备注:内容来源于stack exchange,提问作者Adi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 18:19:38