【发布时间】:2019-09-12 15:12:10
【问题描述】:
我对使用 python 的 opencv 和深度学习非常陌生。我正在尝试从图像中删除水印/徽标。我可以通过在图像中的原始图像中找到裁剪水印图像的位置来找到水印的位置,该位置对于所有图像都是恒定的。我需要删除找到的水印。
这是原图:[![original_image.jpeg][1]][1]
原图2:[![enenter code hereter 这里有图片描述][2]][2]
原图3:[![在此处输入图片描述][3]][3]
从原始图像裁剪水印图像:[![cropped_image.jpeg][4]][4]
图片中的定位水印: [![定位水印][5]][5] 我尝试了各种使用 tensorflow/deep learning 的代码,这些代码没有泛化,并且在运行它们时给出了各种错误。
例如,我尝试了自动水印检测(https://github.com/rohitrango/automatic-watermark-detection),但它不起作用。这个库中的crop_watermark() 函数不适用于我的图像。它正在裁剪图像的其他一些不是水印的部分,还有许多其他代码问题。
类似地,我尝试了许多其他深度学习库,但都没有成功。
我也想试试cv2.inpaint(img,mask,3,cv2.INPAINT_TELEA),但我没有面具图像。我只有一张带有水印的图片,如下所示,因此也无法使用inpaint() 功能。
目前正在尝试使用下面的简单代码来找出图像中水印的确切位置(通过手动裁剪水印并在原始图像中找到位置)。
import numpy as np
import cv2
img = cv2.imread('original_image.jpeg')
print(img.shape)
h,w,c = img.shape
logo = cv2.imread("cropped_image.jpeg")
print(logo.shape)
hl,wl,cl = logo.shape
x1 = int(w/2-wl/2)
y1 = int(h/2-hl)
x2 = int(w/2+wl/2)
y2 = int(h/2)
cv2.rectangle(img, (x1, y1), (x2, y2), (255,0,0), 2)
cv2.imwrite("my.png",img)
cv2.imshow("lalala", img)
以上代码能够找到正确的水印坐标。从这里开始,我不知道如何继续删除水印。如果您能提供一些示例代码以及概念,那就太好了。
感谢您的帮助。
【问题讨论】:
-
我看到了,但它是用 c++ 编写的,我没试过。现在正在尝试实施已接受答案中提到的概念。
-
形态过滤为我的图像提供相同的图像,与教程中提到的不同。无法继续下一步。
标签: python opencv deep-learning watermark cv2