jpg python image matplotlib

python - plt.imshow jpg



Matplotlib imshow funciĆ³n de zoom? (2)

Tengo varias (27) imágenes representadas en matrices en 2D que estoy viendo con imshow (). Necesito hacer un acercamiento exacto en cada imagen. Sé que puedo hacer zoom manualmente, pero esto es tedioso y no lo suficientemente preciso. ¿Hay alguna manera de especificar programáticamente una sección específica de la imagen para mostrar en lugar de todo?


Puede usar plt.xlim y plt.ylim para establecer la región que se trazará:

import matplotlib.pyplot as plt import numpy as np data=np.arange(9).reshape((3,3)) plt.imshow(data) plt.xlim(0.5, 1.5) plt.ylim(0.5,1.5) plt.show()


Si no necesita el resto de su imagen, puede definir una función que recorta la imagen en las coordenadas que desea y luego muestra la imagen recortada.

Nota: aquí ''x'' e ''y'' son el visual xey (eje horizontal y eje vertical en la imagen, respectivamente), lo que significa que está invertido en comparación con la x real (fila) y la y (columna) del NumPy formación.

import scipy as sp import numpy as np import matplotlib.pyplot as plt def crop(image, x1, x2, y1, y2): """ Return the cropped image at the x1, x2, y1, y2 coordinates """ if x2 == -1: x2=image.shape[1]-1 if y2 == -1: y2=image.shape[0]-1 mask = np.zeros(image.shape) mask[y1:y2+1, x1:x2+1]=1 m = mask>0 return image[m].reshape((y2+1-y1, x2+1-x1)) image = sp.lena() image_cropped = crop(image, 240, 290, 255, 272) fig = plt.figure() ax1 = fig.add_subplot(121) ax2 = fig.add_subplot(122) ax1.imshow(image) ax2.imshow(image_cropped) plt.show()