Red de conocimiento informático - Conocimiento del nombre de dominio - ¿Cómo mostrar una imagen usando Python?

¿Cómo mostrar una imagen usando Python?

En Python, además de opencv, también puedes usar dos bibliotecas matplotlib y PIL para manipular imágenes. Prefiero matpoltlib porque su sintaxis se parece más a matlab.

1. matplotlib

1. Mostrar imágenes

Copiar código

importar mapplotlib py plot asplt # PLT se utiliza para mostrar imágenes. .

Importar maplotlib.image como mpimg # mpimg se usa para leer imágenes.

Importar numpy como np

Lena = mpimg.imread('lena.png') #Lea lena.png en el directorio donde se encuentra el código.

#lena ya es np.array, puedes manejarlo como quieras.

lena.shape #(512, 512, 3)

Plt.imshow(lena) #Mostrar imagen

Plt.axis('off') # Los ejes no se muestran.

plt.show()

Copiar código

2. Canal de visualización

Copiar código

#Display El primer canal de la imagen

lena_1 = lena

plt.imshow('lena_1 ')

plt.show()

#En este momento, encontrará que se muestra la imagen de calor en lugar de la imagen en escala de grises que esperábamos. Puede agregar parámetros de cmap, hay varias formas de agregarlos:

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

plt.show()

img = plt.imshow('lena_1 ')

Img.set_cmap('gray') # 'hot' es un mapa de calor.

plt.show()

Copiar código

3. Convertir imagen RGB a escala de grises

No existe una función adecuada en matplotlib Convert. Imagen RGB a imagen en escala de grises. Puedes 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.im show (Gray, cmap = PLT.get _ cmap ('Gris ')).

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

plt.axis("off")

plt.show()

Copiar código

4. Escala la imagen.

Usa Scipy aquí

Copiar código

Importar artículos varios de scipy

Lena _ new _ SZ = misc.imresize (Lena, 0.5) #Si el segundo parámetro es un número entero, es un porcentaje. Si es una tupla, es el tamaño de la imagen de salida.

plt.imshow(lena_new_sz)

plt.axis("off")

plt.show()

Copiar código

Guardar la imagen

5.1 Guarde la imagen dibujada por matplotlib.

Este método es adecuado para guardar cualquier imagen dibujada por matplotlib, lo que equivale a una captura de pantalla.

plt.imshow(lena_new_sz)

plt.axis("off")

' lena_new_sz.png ')

5.2 Guardar matriz como imagen

Importar misceláneos desde scipy

misc.imsave('lena_new_sz.png ', lena_new_sz)

5.3 Guardar matriz directamente

Después de leer, aún puede mostrar la imagen de la misma manera que mostraba la matriz antes, sin ninguna pérdida en la calidad de la imagen.

Np.save ('Lena _ new _ SZ ', Lena _ new _ SZ) #se agregará automáticamente. Guarde npy después del nombre.

img = NP . load(' Lena _ new _ SZ . npy ')#Leer la matriz previamente guardada.

Segundo, PIL

1. Mostrar imágenes

Importar imágenes desde PIL

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

im.show()

2. Convierta la imagen PIL en una matriz numpy.

im_array = np.array(im)

# np.asarray(im) también funciona. La diferencia es que np.asarray() es una copia profunda, np. asarray() es una copia superficial.

Guardar fotos PIL

Llame directamente al método guardar de la clase Imagen.

Importar imágenes desde PIL

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

I.save('new_lena.png ')

4. Convierta una matriz numerosa en una imagen PIL.

Aquí, matplotlib.image se utiliza para leer la matriz de imágenes. Tenga en cuenta que la matriz leída aquí es de tipo float32, el rango es 0-1 y los datos de PIL. La imagen es de tipo uinit8 con un rango de 0 a 255, por lo que se requiere conversión:

Importar matplotlib.image como mpimg

Importar imagen desde PIL

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

im = image . from array(NP . ui nit 8(Lena * 255))

im.show()

5. image

Importar imágenes desde PIL

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

1. L = I.convert('L ')

L.show()