J'ai une image comme ci-dessous,
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.
toute aide serait plus appréciable.
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)