Red de conocimiento informático - Conocimiento del nombre de dominio - Cómo mostrar imágenes en Python

Cómo mostrar imágenes en Python

En Python, en lugar de usar opencv, también puedes usar las bibliotecas matplotlib y PIL para procesar imágenes. Prefiero matplotlib porque su sintaxis se parece más a matlab.

1. matplotlib

1. Mostrar imágenes

Copiar código

importar matplotlib.pyplot como plt # plt se utiliza para mostrar imágenes.

importar matplotlib.image como mpimg # mpimg se usa para leer imágenes

importar numpy como np

lena = mpimg.imread('lena.png') # Lee lena.png en el mismo directorio que el código

# En este momento lena ya es una matriz np.array, por lo que puedes hacer lo que quieras con él

lena. forma #(512, 512, 3)

plt.imshow(lena) #Mostrar imagen

plt.axis('off') #No mostrar el eje de coordenadas

plt.show()

Copiar código

2. Mostrar un canal

Copiar código

# Mostrar la imagen El primer canal

lena_1 = lena

plt.imshow('lena_1) # Muestra el segundo canal de la imagen

plt.show('off' ) # No mostrar el eje de coordenadas

plt.imshow('lena_1')

plt.show()

# En este momento, encontraremos que Lo que se muestra es Heatmap, en lugar de la imagen en escala de grises que esperábamos, puede agregar el parámetro cmap, hay varias formas de agregarlo:

plt.imshow('lena_1', cmap='Greys_r')

plt.show()

img = plt.imshow('lena_1')

img.set_cmap('gray') # 'caliente' es una eliminatoria map

plt.show()

Copiar código

3. Convertir RGB a escala de grises

No existe una función adecuada en matplotlib para convertir gráficos RGB Para convertir a escala de grises, puede personalizar uno según la fórmula:

Copiar código

def rgb2gray(rgb):

return np.dot (rgb[.. .,:3], [0.299, 0.587, 0.114])

gray = rgb2gray(lena)

# También puedes usar plt.imshow(gray, cmap = plt.get_cmap ('gray'))

plt.cmap='Greys_r')

plt.axis('off')

plt. show()

Copiar código

4. Escalar la imagen

Aquí es donde entra scipy

Copiar código

from scipy import misc

lena_new_sz = misc.imresize(lena, 0.5) # Si es un número entero, el segundo parámetro es un porcentaje, si es una tupla, el segundo parámetro es el tamaño; de la imagen de salida

plt.imshow(lena_new_sz)

plt.axis('off')

plt.show()

Copiar código

5. Guardar imagen

<

p>5.1 Guardar imágenes dibujadas por matplotlib

Este método es adecuado para guardar cualquier imagen dibujada por matplotlib, lo que equivale a tomar una captura de pantalla. 3 Guarde la matriz directamente

Después de leer la matriz, aún puede mostrar la imagen de la misma manera que la matriz, sin pérdida de calidad de la imagen<

np.save(' lena_new_sz.png')

misc.imave('lena_new_sz.png')

5.save('lena_new_sz', lena_new_sz) # Agregar automáticamente .npy al nombre guardado

img = np.load('lena_new_sz.npy') # Leer la matriz previamente guardada

2. PIL

1. >desde PIL importar imagen

im = Image.open('lena.png')

im.show()

2. array

im_array = np.array(im )

# También puedes usar np.

I = Image.open('lena.png')

I.save('new_lena.png')

4. Convertir matriz numpy a imagen PIL

Aquí usamos matplotlib.image para leer la imagen. formación. tipo float32, el rango es 0-1 y PIL. Los datos de imagen son del tipo uinit8, el rango es 0-255, por lo que se requiere conversión:

importar matplotlib.Image como mpimg

I = Image.open('new_lena.png')

I.save('new_lena.png')

5.image como mpimg

de importación PIL Image

lena = mpimg.imread('lena.png') # Los datos leídos aquí son de tipo float32, el rango es 0-1

im = Image.fromarray(np. uinit8(lena*255))

im.show()

5.RGB a escala de grises

desde imagen de importación PIL

I = Imagen.open('lena.png')

I.show()

L = I.convert('L')

L.show()

6.