Cómo desarrollar el reconocimiento de imágenes con Pythonpil
1.
El procesamiento de imágenes es una tecnología muy utilizada, y Python, que tiene una biblioteca de extensiones de terceros muy rica, ciertamente no se perderá esta fiesta. PIL (Python Imaging Library) es la biblioteca de procesamiento de imágenes más utilizada en Python. La versión actual es 1.1.7. Podemos descargar el aprendizaje y encontrar información aquí.
La clase Imagen es una clase muy importante en la biblioteca PIL. La creación de instancias a través de esta clase puede cargar directamente archivos de imagen, leer imágenes procesadas e imágenes obtenidas mediante métodos de captura.
2.
Importar el módulo Imagen. Luego puede cargar un archivo de imagen a través del método abierto en la clase Imagen. Si falla la carga del archivo, se generará un IOError; si no se devuelve ningún error, la función de apertura devuelve un objeto Imagen. Ahora, podemos verificar el contenido del archivo a través de algunas propiedades del objeto, a saber:
1 gt;gt;gt; import Image
2gt;gt;gt; im = Image.open( "j.jpg")
3gt; gt; imprimir formato.im, tamaño.im, modo.im
4 JPEG (440, 330) RGB
Aquí hay tres atributos, aprendamos sobre ellos uno por uno.
formato: Identifica el formato de origen de la imagen, o se establece en Ninguno si el archivo no se lee desde un archivo.
tamaño: Una tupla devuelta con dos elementos cuyos valores son ancho y alto en píxeles.
Modo: RGB (imagen en color verdadero), además, L (luminancia), CMTK (imagen preimpresión).
Ahora podemos manipular la instancia de la imagen leída usando algunos métodos definidos en la clase Imagen. Por ejemplo, muestre la última imagen cargada:
1 gt; gt; im.show()
2gt; Figura original:
3. Descripción general de funciones.
3.1 Leer y escribir imágenes: abrir (nombre de archivo de entrada), guardar (nombre de archivo de salida)
3.2 Cortar, pegar y fusionar imágenes:
recortar(): desde imagen Extrae una imagen de un tamaño rectangular determinado. Recibe como parámetro una tupla de cuatro elementos, cada elemento es (izquierda, superior, derecha, inferior) y el origen del sistema de coordenadas (0, 0) es la esquina superior izquierda.
pegar():
fusionar():
1 gt; gt; caja = (100, 100, 200, 200)
2gt;gt;gt; región = im.crop(box)
3gt;gt;gt; región.show()
4gt;gt;gt; = región.transpose(Image.ROTATE_180)
5gt;gt;gt; región.show()
6gt;gt;gt; im.paste(región, cuadro)
p> p>
7gt; gt; gt; im.show()
El efecto es:
Rotar una imagen:
1 rollo de definición (imagen, delta):
2"Rodar una imagen hacia los lados"
3
4xsize, ysize = imagen.size
5
6delta = delta xsize
7if delta == 0: devolver imagen
8
9part1 = imagen.crop((0, 0, delta, ysize))
10part2 = image.crop((delta, 0, xsize, ysize))
11image.paste(part2, (0, 0, xsize- delta, ysize))
12image.paste(part1, (xsize-delta, 0, xsize, ysize))
13
14devolver imagen
3.3 Transformación geométrica.
3.3.1 Transformación geométrica simple.
1 gt; gt; fuera = im.resize((128, 128))#
2gt; La manecilla de las horas gira 45 grados.
3gt;gt;gt;out = im.transpose(Image.FLIP_LEFT_RIGHT) #Intercambiar izquierda y derecha.
4gt;gt;gt;out = im.transpose(Image.FLIP_TOP_BOTTOM) #Intercambiar arriba y abajo.
5gt;gt;gt;out = im.transpose(Image.ROTATE_90) #Girar 90 grados.
6gt;gt;gt;out = im.transpose(Image.ROTATE_180)#Girar 180 grados.
7 gt;gt;gt;out = im.transpose(Image.ROTATE_270)#Girar 270 grados.
Las imágenes después de cada ajuste son:
Imagen 1:
Imagen 2:
Imagen 3:
Imagen 4:
3.3.2 Transformación del espacio de color.
convert(): Esta función se puede utilizar para convertir imágenes a diferentes modos de color.
3.3.3 Mejora de la imagen.
Filtros: En el módulo ImageFilter, puede utilizar la función de filtro para utilizar una serie de filtros de mejora predefinidos en el módulo.
1 gt; gt; gt; importar filtro de imagen
2 gt; gt; imfilter(ImageFilter.DETAIL)
3 gt; gt; gt; imfilter.show()
3.4 Secuencia de imágenes.
Esos son los gráficos dinámicos que vemos a menudo. El sufijo más común es .gif, y también hay FLI/FLC. La biblioteca PIL también proporciona soporte básico para este diagrama de formato de animación. Cuando abrimos este tipo de archivo de imagen, PIL carga automáticamente el primer fotograma de la imagen. Podemos movernos entre fotogramas usando los métodos de buscar y decir.
1 importar imagen
2 im.seek(1)# saltar al segundo fotograma
3
4 intentar: p> p>
5 while 1:
6im.seek( im.tell()1)
7# haz algo con im
8 excepto EOFError:
9pass
3.5 Más sobre lectura de archivos de imagen.
La forma más básica: im = Image.open("filename")
Lectura de archivos de clase: fp = open("filename", "rb"); open(fp)
Lectura de datos de cadena: import StringIO; im = Image.open(StringIO.StringIO(buffer))
Lectura de archivos comprimidos: import TarIO; TarIO("Image.tar", "Image/test/lena.ppm"); im = Image.open(fp)
Este es el final de la práctica básica de PIL. La funcionalidad de otras funciones se puede encontrar aquí para leer más.