gpt4 book ai didi

python - 如何使用Python和OpenCV从图像中删除透明水印

转载 作者:行者123 更新时间:2023-12-02 17:16:42 25 4
gpt4 key购买 nike

以下是我正在处理的图像示例:

我已经在Stackoverflow(here is the most similar situation to mine)上找到了解决类似问题的一些解决方案,并且始终有使用阈值设置的简单解决方案。我从这些答案中尝试了一些解决方案,但尚未获得正确的结果。我认为这里的问题是我的图像不是扫描纸页而是照片。
有什么方法可以从我的图像中删除水印而不丢失任何重要文本? (结果图像可以是灰度的)

最佳答案

如果您没有原始水印图像,则这是一种使用除法归一化(将图像的模糊副本除以原始图像)来减轻Python / OpenCV中水印的一种方法。它还会使背景变白。
输入1:
enter image description here
输入2:
enter image description here

import cv2
import numpy as np
import skimage.exposure as exposure
import skimage.filters as filters

# read the image
img1 = cv2.imread('watermark1.jpg')
img2 = cv2.imread('watermark2.jpg')

# convert to gray
gray1 = cv2.cvtColor(img1,cv2.COLOR_BGR2GRAY)
gray2 = cv2.cvtColor(img2,cv2.COLOR_BGR2GRAY)

# blur
smooth1 = cv2.GaussianBlur(gray1, (5,5), 0)
smooth2 = cv2.GaussianBlur(gray2, (5,5), 0)

# divide gray by morphology image
division1 = cv2.divide(gray1, smooth1, scale=255)
division2 = cv2.divide(gray2, smooth2, scale=255)

# sharpen using unsharp masking
sharp1 = filters.unsharp_mask(division1, radius=3, amount=7, multichannel=False, preserve_range=False)
sharp1 = (255*sharp1).clip(0,255).astype(np.uint8)
sharp2 = filters.unsharp_mask(division2, radius=3, amount=9, multichannel=False, preserve_range=False)
sharp2 = (255*sharp2).clip(0,255).astype(np.uint8)

# save results
cv2.imwrite('watermark1_division_sharp.jpg',sharp1)
cv2.imwrite('watermark2_division_sharp.jpg',sharp2)

# show results
cv2.imshow('sharp1', sharp1)
cv2.imshow('sharp2', sharp2)
cv2.waitKey(0)
cv2.destroyAllWindows()

结果1:
enter image description here
结果2:
enter image description here

关于python - 如何使用Python和OpenCV从图像中删除透明水印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64406206/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com