【问题标题】:How to erase the dotted watermark from set of similar images?如何从一组相似图像中删除虚线水印?
【发布时间】:2019-11-24 01:59:13
【问题描述】:

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

我尝试使用google、tesseract和abby reader,但我发现不包含水印的图像部分识别良好,但带有水印的部分几乎无法识别。

我想使用图像处理来去除水印。我已经尝试了一些 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)

不同寻常的是,我不知道这张图片的水印包含多少像素。有没有办法摆脱这个水印或通过代码使数字变暗并降低水印的暗度?

这是带水印的图片

【问题讨论】:

  • 你已经尝试过“……等等,但没有一个符合我的要求……”;我们也不希望达不到要求:请更具体地说明您的要求,通过发布您认为可接受的清洁图像,或发布生成不符合您要求的图像的代码,以便我们可以校准我们的答案。
  • 嗨 Reblochon Masque,我更新了帖子,提供了更多信息,请看一下并进一步提出建议

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


【解决方案1】:

我正在使用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()

【讨论】:

  • 感谢 Phước Hữu Lưu,我尝试了 yr 代码以及您共享的图像,这是 plt.show() imgur.com/yj0Zsfd 生成的其他图像的链接 ...我仍然不清楚如何为了继续得到结果,您能否分享一下我可以在没有水印的图像上使用 Ocr 的图像的最终代码?
猜你喜欢
  • 1970-01-01
  • 2018-08-25
  • 2017-07-16
  • 1970-01-01
  • 2021-06-20
  • 1970-01-01
  • 1970-01-01
  • 2021-10-04
  • 1970-01-01
相关资源
最近更新 更多