Procesamiento de imágenes, ¿en Python? [cerrado]

81

Recientemente me encontré con un problema que requiere al menos un grado básico de procesamiento de imágenes, ¿puedo hacer esto en Python y, de ser así, con qué?

akdom
fuente
4
Procesamiento de imágenes en tiempo real usando PyPy: morepypy.blogspot.com/2011/07/…
Mikhail

Respuestas:

53

La biblioteca más conocida es PIL . Sin embargo, si simplemente está haciendo una manipulación básica, probablemente esté mejor con los enlaces de Python para ImageMagick , que serán mucho más eficaces que escribir las transformaciones en Python.

Jim
fuente
7
Creo que lo tiene al revés: PIL proporciona solo la funcionalidad básica más básica, pero se integra muy bien con las GUI de Python. La mensajería instantánea es tremendamente más completa, pero requiere algunos búferes de intercambio de trabajo manual de ida y vuelta para integrarse con una GUI.
SilverbackNet
19
Digámoslo de esta manera, triste, pero PIL parece ser abandonado y ni siquiera carga archivos BMP creados con Paint. Si revisa la página web del proyecto, lo resolverá, busque el rastreador de errores (ninguno), la actividad de la lista de correo, SCM, ...
sorin
19
Pillow es un tenedor de PIL que se está manteniendo y desarrollando. Probablemente sea mejor usarlo en su lugar.
David Johnstone
46

Dependiendo de lo que quiera decir con "procesamiento de imágenes", una mejor opción podría estar en las bibliotecas basadas en numpy: mahotas , scikits.image o scipy.ndimage . Todos estos funcionan basados ​​en matrices numpy, por lo que puede mezclar y combinar funciones de una biblioteca y otra.

Comencé el sitio web http://pythonvision.org que tiene más información sobre estos.

luispedro
fuente
"El scikits.image SciKit (kit de herramientas para SciPy) amplía scipy.ndimage para proporcionar un conjunto versátil de rutinas de procesamiento de imágenes". Me pregunto por qué no contribuyeron directamente a ndimage.
endolito
1
Todos estos paquetes tienen diferentes estructuras internas. Sin embargo, al menos mi paquete, mahotas, tomó mucho código de ndimage.
luispedro
scikit-imageahora está alojado en scikit-image.org
Stefan van der Walt
Gracias. Actualizado mi respuesta
luispedro
scipy.ndimageel enlace está muerto. Enlace actual, muy probablemente: scipy.github.io/devdocs/tutorial/ndimage.html
kmonsoor
19

También tiene un enfoque para el procesamiento de imágenes basado en módulos científicos "estándar": SciPy tiene un paquete completo dedicado al procesamiento de imágenes: scipy.ndimage . Scipy es, en efecto, el paquete estándar de cálculos numéricos generales; se basa en el módulo de manipulación de matrices estándar de facto NumPy : las imágenes también se pueden manipular como matriz de números. En cuanto a la visualización de imágenes, Matplotlib (también parte de la "trilogía científica") hace que la visualización de imágenes sea bastante simple .

SciPy todavía se mantiene activamente, por lo que es una buena inversión para el futuro. Además, SciPy actualmente también se ejecuta con Python 3, mientras que la Biblioteca de imágenes de Python (PIL) no.

Eric O Lebigot
fuente
Para referencia futura, ndimage requiere PIL de todos modos.
davidtbernal
1
@notJim: ¿verdad? PIL no aparece en las dependencias de SciPy por MacPorts, y puedo hacerlo import scipysin instalar PIL ( import Imagefalla con ImportError).
Eric O Lebigot
2
Sí, cuando traté de leer una imagen usando ImRead, recibí el error "raise ImportError (" No se pudo importar la biblioteca de imágenes de Python (PIL) ""
davidtbernal
2
@notJim: Es cierto que SciPy se basa en PIL para la lectura de imágenes (lo intenté con un archivo JPEG "simple" y falló de la misma manera que en su ejemplo). SciPy aún puede procesar imágenes sin PIL (PIL es una dependencia opcional ).
Eric O Lebigot
7

También está el pycairo , que podría ser más adecuado según sus necesidades.

sgraham
fuente
6

En realidad, existe una maravillosa biblioteca de imágenes de Python (PIL) . Le brinda la capacidad de alterar imágenes existentes, incluidas las capacidades de suavizado, y crear nuevas imágenes con texto y demás. También puede encontrar un tutorial introductorio decente en el manual de PIL que se proporciona en el sitio mencionado anteriormente.

akdom
fuente
9
¿Usaste Google antes de hacer esta pregunta? :-) No digo que debas hacerlo , solo que parece un poco divertido responder tu propia pregunta en menos de un minuto.
Alexandra Franks
5
La idea general de este sitio es proporcionar pares (preguntas, respuestas) que servirán como información útil para alguien que busque sobre el tema. Se recomienda que, si encuentra algo útil que no sabía antes, y aún no está en el sitio, lo comparta con StackOverflow.
akdom
8
De las preguntas frecuentes: también está perfectamente bien hacer y responder su propia pregunta de programación, pero finja que está en Jeopardy: exprese en forma de pregunta. Aunque, creo que esta pregunta podría ser respondida fácilmente por cualquier persona que la necesite rápidamente a través de una búsqueda en Google ...
Martin W
5
@MartinW - Encontré esta pregunta a través de la búsqueda de Google
Bulwersator