10 herramientas de edición de imágenes de Python
Las herramientas de Python que se mencionan a continuación proporcionan métodos simples y directos para editar imágenes y manipular los datos subyacentes de las imágenes.
-- Parul Pandey
El mundo actual está lleno de datos y los datos de imágenes son una parte importante del mismo. Sin embargo, estos datos de imágenes solo se pueden utilizar después del procesamiento y análisis para mejorar la calidad de la imagen y extraer información efectiva de ella.
Las operaciones comunes de procesamiento de imágenes incluyen visualización de imágenes, operaciones básicas de imágenes como recortar, voltear y rotar imágenes, clasificación, extracción de características y reconocimiento de imágenes; Python, un lenguaje de programación científico cada vez más popular, es la mejor opción para estas operaciones de procesamiento de imágenes. Al mismo tiempo, existen muchas herramientas excelentes de procesamiento de imágenes que se pueden utilizar de forma gratuita en el ecosistema Python.
A continuación se presentarán 10 bibliotecas de Python que se pueden utilizar para tareas de procesamiento de imágenes. Proporcionan métodos simples y directos para editar imágenes y ver los datos subyacentes de la imagen.
scikit-image es una herramienta Python de código abierto para usar con matrices NumPy, que implementa algoritmos y aplicaciones que pueden usarse en investigación, educación y aplicaciones industriales. Es una biblioteca bastante sencilla de usar, incluso para aquellos nuevos en el ecosistema Python. Al mismo tiempo, la calidad de su código también es muy alta porque está desarrollado por una comunidad de voluntarios activa y ha pasado la revisión por pares.
La documentación de scikit-image es muy completa y contiene una gran cantidad de casos de uso.
Se puede utilizar importando skimage, la mayor parte de la funcionalidad se puede encontrar en sus submódulos.
Filtrado de imágenes:
Utilice el método match_template() para lograr la coincidencia de plantillas:
Puede ver más información relacionada en la página de visualización Ejemplo.
NumPy proporciona soporte para matrices y es una biblioteca central para la programación en Python. La esencia de una imagen es en realidad una matriz NumPy estándar que contiene puntos de datos de píxeles, por lo que puede utilizar algunas operaciones básicas de NumPy (como corte, enmascaramiento, indexación elegante, etc.) para manipular la imagen desde el nivel de píxel. Las imágenes almacenadas mediante matrices NumPy también se pueden cargar con skimage y mostrarse usando matplotlib.
En la documentación oficial de NumPy se proporciona una lista completa de documentación de código y recursos.
Utilice NumPy para enmascarar imágenes:
Al igual que NumPy, SciPy es un módulo informático científico central de Python y también se puede utilizar para operaciones básicas y procesamiento de imágenes. En particular, el submódulo scipy.ndimage en SciPy v1.1.0 proporciona funciones que operan en matrices NumPy de n dimensiones. Actualmente, SciPy también proporciona funciones para filtrado lineal y no lineal, morfología binaria, interpolación B-spline, mediciones de objetos, etc.
La lista completa de funciones de scipy.ndimage se puede encontrar en la documentación oficial.
Utilice el filtro gaussiano de SciPy para desenfocar imágenes:
PIL (Python Imaging Library) es una biblioteca de programación Python gratuita que brinda la capacidad de abrir y abrir archivos de imágenes en varios formatos. apoyo al ahorro. Pero después de 2009, PIL dejó de lanzar nuevas versiones.
Afortunadamente, existe una bifurcación de PIL desarrollada activamente, Pillow, que tiene un proceso de instalación más simple que PIL, es compatible con la mayoría de los sistemas operativos convencionales y también es compatible con Python 3. Pillow incluye funciones básicas de procesamiento de imágenes, incluida la operación de píxeles, el filtrado mediante núcleos de convolución integrados, la conversión del espacio de color y más.
La documentación oficial de Pillow proporciona ejemplos de las instrucciones de instalación de Pillow para cada módulo en su propia base de código.
Utilice el módulo ImageFilter en Pillow para mejorar la imagen:
OpenCV (biblioteca Open Source Computer Vision) es una de las bibliotecas más utilizadas en el campo de la visión por computadora, y OpenCV -Python es la API de Python de OpenCV. OpenCV-Python se ejecuta muy rápido, gracias a su código de fondo escrito en C/C++, y debido a que está encapsulado en Python, no es difícil de llamar e implementar. Estas ventajas hacen de OpenCV-Python una buena opción para aplicaciones de visión por computadora con uso intensivo de computación.
Es mejor leer el documento OpenCV2-Python-Guide antes de comenzar.
Utilice Pyramid Blending en OpenCV-Python para combinar manzanas y naranjas:
SimpleCV es un marco de visión por computadora de código abierto. Es compatible con algunas bibliotecas de visión por computadora de alto rendimiento, incluido OpenCV, y no necesita comprender conceptos como profundidad de bits, formato de archivo, espacio de color, etc., por lo que la curva de aprendizaje de SimpleCV es más suave que la de OpenCV Duo, como dice su eslogan. , "facilita la visión por computadora". Las ventajas de SimpleCV también son:
La documentación oficial es simple y fácil de entender, y también viene con una gran cantidad de casos de uso de aprendizaje.
La documentación contiene instrucciones de instalación, ejemplos y algunos tutoriales introductorios a Mahotas.
Mahotas se esfuerza por utilizar una pequeña cantidad de código para lograr funcionalidad. Por ejemplo, este juego de Finding Wally:
ITK (Insight Segmentation and Registration Toolkit) es un conjunto de herramientas multiplataforma de código abierto que proporciona a los desarrolladores funciones universales de análisis de imágenes. SimpleITK está construido en base a la capa de simplificación ITK. , diseñado para promover la aplicación de ITK en la creación rápida de prototipos, educación y lenguajes interpretados. Como conjunto de herramientas de análisis de imágenes, SimpleITK también viene con una gran cantidad de componentes que pueden admitir funciones convencionales de filtrado, segmentación de imágenes y registro de imágenes. Aunque SimpleITK está escrito en C++, también es compatible con la mayoría de los lenguajes de programación, incluido Python.
Hay muchos casos de uso de Jupyter Notebooks que demuestran la aplicación de SimpleITK en educación e investigación científica. A través de estos casos de uso, puede ver cómo usar SimpleITK para implementar análisis de imágenes interactivos usando Python y R.
Proceso de registro de imágenes CT/MR implementado usando Python + SimpleITK:
pgmagick es una biblioteca GraphicsMagick empaquetada en Python. GraphicsMagick a menudo se considera la navaja suiza del procesamiento de imágenes porque su potente y eficiente conjunto de herramientas admite la lectura y escritura de hasta 88 formatos de archivos de imágenes principales, incluidos DPX, GIF, JPEG, JPEG-2000, PNG, PDF, PNM, TIFF, etc. .
El repositorio GitHub de pgmagick tiene instrucciones de instalación relevantes, listas de dependencias y pautas de uso detalladas.
Escalado de imagen:
Extracción de bordes:
Cairo es una biblioteca de gráficos 2D para dibujar gráficos vectoriales y Pycairo es un conjunto de herramientas para enlaces de Cairo Python. La ventaja de los gráficos vectoriales es que la claridad de la imagen no se perderá durante el escalado. Usando Pycairo, puedes llamar comandos relacionados con Cairo en Python.
El repositorio GitHub de Pycairo proporciona instrucciones detalladas sobre la instalación y el uso, así como una guía de introducción que presenta brevemente a Pycairo.
Utilice Pycairo para dibujar segmentos de línea, formas básicas y degradados radiales:
Las anteriores son algunas bibliotecas de procesamiento de imágenes útiles en Python, ya sea que haya oído hablar de ellas o no, ya sea que Los haya usado antes o no, vale la pena probarlos y conocerlos.
vía: /article/19/3/python-image-manipulation-tools
Autor: Parul Pandey Selección de tema: lujun9972 Traductor: HankChow Corrección: wxy