2016-08-26 3 views
0

J'ai un bitmap de forme aléatoire découpé par l'utilisateur. Je veux faire disparaître ses frontières, c'est-à-dire les contours, de manière à les rendre lisses. Que devrais-je faire? Pour obtenir les bordures et la couleur de chaque pixel en bitmap, je le traverse pixel par pixel. Cela prend beaucoup de temps, mais je suis d'accord avec ça. OpenCV est-il ma seule option? Si oui, quelqu'un peut-il me diriger vers un tutoriel ou une suggestion pour une approche logique?android: lisser les bords de l'image bitmap de forme aléatoire

Répondre

1

Vous pouvez simplement exécuter un filtre de lissage sur votre forme.

Dans opencv vous pouvez utiliser la fonction flou ou gaussainBlur. Regardez http://docs.opencv.org/2.4/doc/tutorials/imgproc/gausian_median_blur_bilateral_filter/gausian_median_blur_bilateral_filter.html.

Vous n'avez pas besoin d'utiliser opencv mais je pense que ce serait plus facile et plus rapide.

Si vous ne voulez toujours pas, vous pouvez utiliser tout autre code implémentant le lissage d'une image.

Dans le cas où vous voulez juste pour effectuer les pixels frontaliers effectuer les tâches suivantes:

  1. Faire une copie de l'image originale
  2. filtre toute l'image.
  3. Extrayez le pixel de bordure à l'aide d'opencv findContours.
  4. Copie de l'image floue que les pixels à la frontière et il voisinage et de les copier à la copie que vous avez fait à l'étape 1.
+0

merci, je vais essayer filtre de lissage. mais ne va-t-il pas lisser l'image dans son ensemble? je veux lisser seulement les frontières –

+0

j'ai édité la réponse j'espère que ceci répond mieux à votre question, –