如何从一组相似的图像中删除虚线的水印?

时间:2019-07-15 11:10:04

标签: python python-3.x image-processing opencv3.0 watermark

我想自动化将一组图像输入到数字生成系统中的任务,而在此之前,我想删除在这些图像中常见的点状水印。

我尝试使用google,tesseract和abby阅读器,但是发现不包含水印的图像部分可以被很好地识别,但是带有水印的部分几乎无法识别。

我想使用图像处理删除水印。我已经尝试过一些opencv,python,matlab等示例代码,但都不符合我的要求...

这是我尝试过的Python示例代码,它可以更改亮度和暗度:

import cv2
import numpy as np
img = cv2.imread("d:\\Docs\\WFH_Work\\test.png")
alpha = 2.5
beta = -250
new = alpha * img + beta
new = np.clip(new, 0, 255).astype(np.uint8)
cv2.imshow("my window", new)

通常,我不知道该图像的水印包括多少个像素。有没有办法摆脱此水印或通过代码使数字变暗并降低水印的暗度?

这是水印图像

1 个答案:

答案 0 :(得分:0)

我正在使用dilate删除图形,然后找到边缘以检测水印。通过水印内的主要灰色将其删除

import cv2
import numpy as np
from matplotlib import pyplot as plt

img = cv2.imread('test.png', 0)

kernel = np.ones((10,10),np.uint8)

dilation = cv2.dilate(img,kernel,iterations = 1) 
erosion = cv2.erode(dilation,kernel,iterations = 1)


plt.imshow(erosion, cmap='gray')
plt.show()

#contour
gray = cv2.bilateralFilter(erosion, 11, 17, 17)
edged = cv2.Canny(gray, 30, 200)

plt.imshow(edged, cmap='gray')
plt.show()

enter image description here