web-dev-qa-db-fra.com

Comment supprimer l'arrière-plan du filigrane dans l'image Python

J'ai une image comme ci-dessous,

enter image description here

Je souhaite supprimer le filigrane d'arrière-plan.

Jusqu'à présent, j'ai essayé la méthode inpainting dans opencv. Ça ne m'a pas aidé.

J'ai essayé le script suivant:

edges = cv2.Canny(img,50,150,apertureSize = 3)
dst = cv2.inpaint(img,edges,3,cv2.INPAINT_TELEA)

Je suis nouveau dans le traitement d'images et opencv. Donc, je ne sais pas si je fais de la bonne façon ou non pour effectuer l'inpainting. Quelle méthode dois-je faire pour supprimer les filigranes d'arrière-plan.

Je voudrais supprimer le filigrane vert cité de mon image.

enter image description here

toute aide serait plus appréciable.

13
Mohamed Thasin ah

Le texte a ici une intensité différente de celle du filigrane. Vous pouvez jouer avec une simple transformation luminosité/contraste, c'est-à-dire augmenter le gain/contraste jusqu'à ce que le filigrane disparaisse et réduire la luminosité pour compenser.

Voir OpenCV docs pour un tutoriel simple.

Voici une tentative rapide en Python, n'utilisant pas vraiment OpenCV car il n'est pas nécessaire à mon humble avis pour une transformation linéaire aussi simple. Jouez avec les paramètres alpha (contraste) et beta (luminosité) jusqu'à obtenir le résultat souhaité

import cv2
import numpy as np

img = cv2.imread("veidz.jpg")

alpha = 2.0
beta = -160

new = alpha * img + beta
new = np.clip(new, 0, 255).astype(np.uint8)

cv2.imwrite("cleaned.png", new)

removed watermark

20
filippo