Je suis nouveau sur opencv. J'ai plusieurs images. Une des images de l'échantillon comme indiqué ci-dessous dans le coin supérieur gauche. Fondamentalement, je veux séparer l'arrière-plan et le premier plan de sorte que les bords sont clairs et je peux détecter les contours correctement.OpenCV python Filtre Stamp photoshop
J'ai essayé de nombreux seuils de filtre et bien sûr en utilisant divers paramètres.
Enfin quand je regardais sur la galerie de filtres photoshop je remarquai un filtre appelé Stamp qui me donne résultat souhaité (coin en haut à droite). Il rend les bords clairs et j'imagine utiliser une certaine quantité de flou dans les coins mous.
Je ne suis pas sûr comment je peux obtenir la même opération que le filtre de tampon de Photoshop utilisant python CV2?
Toute aide ou suggestion vous sera reconnaissante.
image originale Untouched
Tentative 1: - Code
import cv2
import numpy as np
from matplotlib import pyplot as plt
input_img = cv2.imread('images/Tas/t3.bmp')
desired_img = cv2.imread('images/stamp.jpg')
# gray scale
gray = cv2.cvtColor(input_img, cv2.COLOR_BGR2GRAY)
kernel = np.ones((3,3),np.uint8)
thresh1 = cv2.threshold(input_img,80,255,cv2.THRESH_BINARY)[1]
erosion1 = cv2.erode(thresh1,kernel,iterations = 1)
dilation1 = cv2.dilate(erosion1,kernel,iterations = 1)
thresh2 = cv2.threshold(input_img,120,255,cv2.THRESH_BINARY)[1]
erosion2 = cv2.erode(thresh2,kernel,iterations = 1)
dilation2 = cv2.dilate(erosion2,kernel,iterations = 1)
titles = ['Original', 'Desired','thresh1', 'erosion1','dilation1','thresh2','erosion2','dilation2']
images = [input_img, desired_img, thresh1, erosion1,dilation1, thresh2,erosion2, dilation2]
for i in xrange(8):
plt.subplot(2,4,i+1),plt.imshow(images[i])
plt.title(titles[i])
plt.xticks([]),plt.yticks([])
plt.show()
Sortie:
Cela ressemble à une binarisation, et probablement une érosion et une dilatation. Afficher l'image originale intacte aussi –
Hi @AnderBiguri Juste ajouté l'image originale. – VK321
@AnderBiguri .. de l'aide? – VK321