Inpaint()函数不适用于所有图像,使用python opencv删除水印

时间:2019-04-24 14:17:30

标签: python opencv computer-vision cv2

我正在尝试从图像中删除水印/徽标。当前正在使用cv2.inpaint(img,mask, 100, cv2.INPAINT_TELEA)库的opencv-contrib-python函数,并且能够从下面的测试图像1中删除水印。但是相同的代码不适用于下面的测试图像2和3。

测试图片1:[![在此处输入图片说明] [1]] [1]

测试图片2:[![在此处输入图片说明] [2]] [2]

测试图片3:[![在此处输入图片说明] [3]] [3]

蒙版图像:[![在此处输入图像描述] [4]] [4]

当前代码:

import cv2 

cv2.namedWindow("Original_Image", cv2.WINDOW_FREERATIO)
cv2.namedWindow("Result", cv2.WINDOW_FREERATIO)

img = cv2.imread('image10.jpeg')
mask = cv2.imread('99acres_mask.jpg', 0)


temp, mask = cv2.threshold(mask, 180, 255, cv2.THRESH_BINARY)
dst = cv2.inpaint(img,mask, 100, cv2.INPAINT_TELEA)
cv2.imwrite("removed_wm.png",dst)

以下是我得到的输出:

输出测试图像1:[![在此处输入图像描述] [5]] [5]

输出测试图像2:[![在此处输入图像描述] [6]] [6]

即使我尝试将dst = cv2.inpaint(img,mask, 100, cv2.INPAINT_TELEA)中的半径100更改为3、10、25、30、50和其他值,但没有一个起作用。我也将标志INPAINT_TELEA更改为'INPAINT_NS仍然没有运气。

有人能帮我从其他图像中去除水印吗?

谢谢。

0 个答案:

没有答案