2 votes

Le moyen le plus rapide de manipuler des images en Python ?

Je crée un processus qui itère sur une image et effectue des transformations x/y et des zooms. Les images originales sont très grandes. Mon processus actuel consiste à créer un script bash script (en utilisant python) pour créer des rangées et des rangées avec le fameux Imagemagick Convert. L'avantage principal de l'utilisation de convert est le fait que vous pouvez charger l'image en mémoire une seule fois, puis écrire chaque image. Cependant, ce flux de travail bash script n'est pas viable, et j'ai besoin de quelque chose de plus natif. D'où la question suivante :

  • Quelle est la bibliothèque de traitement d'images en python la plus rapide ? pour la manipulation d'images ? Compte tenu de la taille des images, la vitesse est l'objectif à atteindre. l'objectif.

Voici où mes recherches (et quelques bricolages) m'ont conduit :

Baguette (Imagemagick wrapper) - Théoriquement, Wand serait parfait ! Mais je n'ai trouvé aucune mention de la possibilité de lire l'image à partir de la mémoire, ce qui la rend TRÈS lente. mémoire, ce qui le rend TRÈS lent.

Skimage - J'aimerais utiliser Skimage pour la profondeur des opérations (bien que ce soit trop pour mes besoins), mais j'ai trouvé l'API/Documentation très difficiles à utiliser. Cependant, le fait de pouvoir charger une image dans un tableau numpy et d'obtenir des vitesses vertigineuses (pour Python, en tout cas), semble être un argument convaincant.

LIP - Pil peut être très difficile à installer, ce qui a causé beaucoup de problèmes sur quelques systèmes que j'essaie de déployer. L'API, par contre, est très facile. J'ai de ses problèmes de développement.

Oreiller - Comme ci-dessus, j'ai eu quelques difficultés à faire fonctionner Pillow. Je crois avoir lu que Pillow peut entrer en conflit avec PIL... peut-être que c'est le problème ? c'est peut-être le problème ?

J'aimerais avoir votre avis.

2voto

fmw42 Points 6778

C'est trop long pour un seul commentaire. Je le mets donc ici.

Notez que je ne suis pas un expert de ces outils, à l'exception d'ImageMagick, mais que j'ai un peu tâté le terrain avec chacun d'eux.

Les commentaires et les avis d'autres personnes plus expertes que moi dans l'utilisation de ces outils sont les bienvenus.

Je n'ai pas beaucoup utilisé Wand ou PIL. Je n'aime pas PIL car il n'est pas compatible avec numpy sans reformatage, d'après mon expérience limitée. Je ne l'utilise donc pas. Wand a l'air bien si vous aimez convertir ImageMagick. J'ai utilisé Skimage et OpenCV pour différentes choses. Et je les ai mélangés dans certains scripts Python numpy scripts.

Wand est probablement le plus facile à utiliser si vous connaissez ImageMagick. Je ne sais pas grand-chose de sa vitesse. Voir http://docs.wand-py.org/en/0.4.1/wand/image.html . L'une des limites de la baguette est, à mon avis, qu'elle n'a pas la capacité de traiter les profils.

Voir http://pillow.readthedocs.io/en/3.1.x/reference/Image.html pour la LIP, qui est probablement la plus facile à utiliser. Mais son format d'image peut nécessiter un changement de format pour fonctionner avec numpy. Je ne pense pas qu'il soit aussi complet que Wand.

Voir aussi http://scikit-image.org/docs/dev/api/skimage.transform.html pour la rotation, le redimensionnement et la transformation affine. C'est la deuxième méthode la plus facile à utiliser, mais elle peut être plus rapide que les deux autres.

Voir aussi https://docs.opencv.org/3.0-beta/doc/py_tutorials/py_imgproc/py_geometric_transformations/py_geometric_transformations.html bien qu'il faille faire tout cela avec des matrices. Il est également très rapide et dispose de capacités GPU.

Je n'ai pas d'expérience en matière de synchronisation, si ce n'est que je trouve Skimage et OpenCV plus rapides qu'Imagemagick. Mais ils sont moins directement fonctionnels pour des choses simples qu'Imagemagick peut faire, en dehors de mes commentaires ci-dessus.

Je pense que vous devez décider du compromis que vous souhaitez en ce qui concerne la rapidité et l'efficacité du codage.

Si quelqu'un connaît un ensemble de tests de codage et de vitesse comparant ces outils sur des opérations simples telles que le redimensionnement, la rotation, le recadrage, l'affinité, la perspective, etc, cela serait utile et je serais heureux d'en savoir plus sur ces comparaisons.

P.S. J'ai trouvé ces références concernant les LIP qui sont dépassées et remplacées par Pillow :

http://pillow.readthedocs.io/en/3.4.x/about.html http://pillow.readthedocs.io/en/3.4.x/installation.html

Voir aussi les documents : https://pypi.python.org/pypi/Pillow/4.3.0 https://pillow.readthedocs.io/en/4.3.x/reference/Image.html

Je n'ai pas essayé la nouvelle version de Pillow.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X