Функция Inpaint () работает не для всех типов изображений для удаления водяных знаков с помощью python opencv

#python #opencv #computer-vision #cv2

#python #opencv #компьютерное зрение #cv2

Вопрос:

Я пытаюсь удалить водяной знак / логотип с изображения. В настоящее время используется cv2.inpaint(img,mask, 100, cv2.INPAINT_TELEA) функция (из opencv-contrib-python библиотеки), и я могу удалить водяной знак с тестового изображения 1 ниже. Но тот же код не работает для тестовых изображений 2 и 3 ниже.

Текущий код:

 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)
  

Следующий вывод, который я получаю:

Даже я пытался изменить radius 100 в dst = cv2.inpaint(img,mask, 100, cv2.INPAINT_TELEA) на 3, 10, 25, 30, 50 и другие значения, но ни одно из них не сработало. Также я меняю флаг INPAINT_TELEA на ‘ INPAINT_NS по-прежнему безуспешно.

Кто-нибудь может мне помочь удалить водяной знак и с других изображений.

Заранее спасибо.

Комментарии:

1. Она довольно хорошо работает на изображении 1. In не работает на изображении 2, возможно, потому, что алгоритм слишком упрощен для такого рода загроможденных изображений.

2. Да, это имеет смысл