J'ai une image et une zone circulaire. Je dois tout brouiller, sauf pour la zone circulaire. Aussi je dois faire la frontière du cercle lisse.
L'entrée: Masque de dégradé se fondant dans opencv python
La sortie (fait dans l'image redactor avec un masque, mais je pense que opencv est en utilisant uniquement des masques bitmap):
Pour l'instant i ont un code en python, qui isn 't floue frontière du cercle.
def blur_image(cv_image, radius, center, gaussian_core, sigma_x):
blurred = cv.GaussianBlur(cv_image, gaussian_core, sigma_x)
h, w, d = cv_image.shape
# masks
circle_mask = np.ones((h, w), cv_image.dtype)
cv.circle(circle_mask, center, radius, (0, 0, 0), -1)
circle_not_mask = np.zeros((h, w), cv_image.dtype)
cv.circle(circle_not_mask, center, radius, (2, 2, 2), -1)
# Computing
blur_around = cv.bitwise_and(blurred, blurred, mask=circle_mask)
image_in_circle = cv.bitwise_and(cv_image, cv_image, mask=circle_not_mask)
res = cv.bitwise_or(blur_around, image_in_circle)
return res
Version actuelle:
Comment puis-je brouiller la frontière du cercle? Dans l'exemple de sortie, j'ai utilisé le masque dégradé dans le programme. Y a-t-il quelque chose de similaire dans opencv?
MISE À JOUR 04,03
, j'ai essayé la formule de this answered topic et ce que je:
code:
def blend_with_mask_matrix(src1, src2, mask):
res = src2 * (1 - cv.divide(mask, 255.0)) + src1 * cv.divide(mask, 255.0)
return res
Ce code devrait fonctionner comme un semblable récent, mais il n'a pas . L'image en cercle est légèrement différente. Il a quelques problèmes de couleur. La question est toujours ouverte.
jeter un oeil à [CETTE PAGE] (http://stackoverflow.com/questions/30101044/how-to-blur-some-portion-of-image-in-android) –
@Jeru J'ai déjà trouvé un bonne formule mais a quelques problèmes avec l'intégrer en python. '(masque/255) * flou + (1-masque/255) * autre img'. J'essaye de travailler sans boucles, seulement avec les opérations matricielles numpy – 01ghost13
comment fonctionne votre formule? –