imagenes - plt.show() python
Mostrar imagen con un zoom=1 con Matplotlib imshow()(¿cómo?) (2)
Matplotlib no está optimizado para esto. Estaría un poco mejor con opciones más simples si solo desea mostrar una imagen de un píxel a un píxel. (Echa un vistazo a Tkinter, por ejemplo.)
Dicho esto:
import matplotlib.pyplot as plt
import numpy as np
# DPI, here, has _nothing_ to do with your screen''s DPI.
dpi = 80.0
xpixels, ypixels = 800, 800
fig = plt.figure(figsize=(ypixels/dpi, xpixels/dpi), dpi=dpi)
fig.figimage(np.random.random((xpixels, ypixels)))
plt.show()
O, si realmente quieres usar imshow
, necesitarás ser un poco más detallado. Sin embargo, esto tiene la ventaja de que le permite hacer zoom, etc. si lo desea.
import matplotlib.pyplot as plt
import numpy as np
dpi = 80
margin = 0.05 # (5% of the width/height of the figure...)
xpixels, ypixels = 800, 800
# Make a figure big enough to accomodate an axis of xpixels by ypixels
# as well as the ticklabels, etc...
figsize = (1 + margin) * ypixels / dpi, (1 + margin) * xpixels / dpi
fig = plt.figure(figsize=figsize, dpi=dpi)
# Make the axis the right size...
ax = fig.add_axes([margin, margin, 1 - 2*margin, 1 - 2*margin])
ax.imshow(np.random.random((xpixels, ypixels)), interpolation=''none'')
plt.show()
Quiero mostrar una imagen (digamos 800x800) con la función Matplotlib.pyplot imshow () pero quiero mostrarla de manera que un píxel de la imagen ocupe un píxel en la pantalla (factor de zoom = 1, sin reducción, sin estiramiento).
Soy un principiante, ¿sabes cómo proceder?
Si realmente no necesitas matlibplot, esta es la mejor manera para mí
import PIL.Image
from io import BytesIO
import IPython.display
import numpy as np
def showbytes(a):
IPython.display.display(IPython.display.Image(data=a))
def showarray(a, fmt=''png''):
a = np.uint8(a)
f = BytesIO()
PIL.Image.fromarray(a).save(f, fmt)
IPython.display.display(IPython.display.Image(data=f.getvalue()))
use showbytes()
para mostrar una cadena de bytes de imagen, y showarray()
para mostrar una matriz numpy.