[英]How to remove transparent watermark from image using Python and openCV
以下是我處理的圖像示例:
我已經在 Stackoverflow 上找到了一些類似問題的解決方案( 這是與我最相似的情況),並且總是有一個使用閾值的簡單解決方案。 我從這些答案中嘗試了一些解決方案,但還沒有得到正確的結果。 我認為這里的問題是我的圖像不是掃描的紙頁而是照片。
有什么方法可以從我的圖像中去除水印而不丟失任何重要文本? (結果圖像可以是灰度的)
如果您沒有原始水印圖像,那么這里是一種使用除法歸一化(將圖像的模糊副本除以原始圖像)減輕 Python/OpenCV 中水印的方法。 它還可以使背景變白。
輸入 1:
輸入 2:
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:
結果 2:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.