Est-il une bibliothèque pour la déformation de l'image / image morphing pour python avec contrôle de points?
Vous souhaitez prendre des images et de marquer des points spécifiques (par exemple, marque de la région autour des yeux, du nez, de la bouche, etc) et ensuite les transformer en points marqués dans une autre image. Quelque chose comme:
transform(original_image, marked_points_in_the_original, marked_points_in_the_reference)
Je n'arrive pas à trouver un algorithme décrivant, ni puis-je trouver les bibliothèques avec elle. Je suis prêt à le faire moi-même aussi, tant que je peux trouver de bons/facile à suivre son matériel. Je sais que c'est possible, bien que depuis que j'ai vu certains incomplète (ne pas vraiment expliquer comment faire) .les fichiers pdf sur google avec elle.
Voici un exemple de points marqués et de la transformation, depuis que vous avez demandé des éclaircissements. Si celui-ci n'est pas à l'aide de 2 personnes comme je l'ai dit plus tôt.
Edit: j'ai réussi à obtenir le im.transform
méthode de travail, mais l'argument est une liste de ((box_x, box_y, box_width, box_height), (x0, y0, x1, y1, x2, y2, x3, y3))
, avec le premier point de l'être NW, la seconde SW, la troisième NE et la quatrième SE. (0, 0) est le plus à gauche partie supérieure de l'écran, aussi loin que je pouvais dire. Si j'ai fait tout droit, cette méthode n'est pas vraiment ce dont j'ai besoin.
- "transformer" est un mot vague. Pouvez-vous expliquer ce que vous entendez? Voulez-vous copier des parties d'une image et de les "coller" directement dans un autre? Quel type de région?
Vous devez vous connecter pour publier un commentaire.
Exemple de code donné par Blender ne fonctionne pas pour moi. Aussi, le PIL de la documentation pour
im.transform
est ambigu. J'ai donc creuser dans le PIL code source et enfin comprendre comment utiliser l'interface. Voici mon complet d'utilisation:Avant:
Après:
Je suggère l'exécution de code ci-dessus dans iPython ensuite imprimer
mesh
de comprendre quel type d'entrée est nécessaire pourim.transform
. Pour moi, la sortie est:Sur une note similaire, vous pouvez utiliser ImageMagick l'API Python pour faire Shepards Distorsion de l'.
Oui, il y est. C'est un peu faible, mais PIL (Python Imaging Library) a une fonction pour faire ce genre de transformation. Je n'ai jamais vraiment eu fonctionner pour moi (que mon problème était un peu plus simple), mais vous pouvez jouer avec elle.
Voici une bonne ressource pour la PIL transformations (vous voulez regarder MAILLAGE): http://effbot.org/tag/PIL.Image.Image.transform.
À partir de la documentation:
De données est un n-uplet de rectangles:
Il transforme le premier rectangle dans la seconde.
mesh
est constitué de paires de rectangles, mais vous pouvez faire dégénérer1x1
rectangles. Plus la taille est grande, plus vite il va.