Estoy tratando de aprender a abrir usando Python y encontré este código a continuación:
import cv2 import numpy as np from matplotlib import pyplot as plt BLUE = [255,0,0] img1 = cv2.imread('opencv_logo.png') replicate = cv2.copyMakeBorder(img1,10,10,10,10,cv2.BORDER_REPLICATE) reflect = cv2.copyMakeBorder(img1,10,10,10,10,cv2.BORDER_REFLECT) reflect101 = cv2.copyMakeBorder(img1,10,10,10,10,cv2.BORDER_REFLECT_101) wrap = cv2.copyMakeBorder(img1,10,10,10,10,cv2.BORDER_WRAP) constant= cv2.copyMakeBorder(img1,10,10,10,10,cv2.BORDER_CONSTANT,value=BLUE) plt.subplot(231),plt.imshow(img1,'gray'),plt.title('ORIGINAL') plt.subplot(232),plt.imshow(replicate,'gray'),plt.title('REPLICATE') plt.subplot(233),plt.imshow(reflect,'gray'),plt.title('REFLECT') plt.subplot(234),plt.imshow(reflect101,'gray'),plt.title('REFLECT_101') plt.subplot(235),plt.imshow(wrap,'gray'),plt.title('WRAP') plt.subplot(236),plt.imshow(constant,'gray'),plt.title('CONSTANT') plt.show()
fuente: http://docs.opencv.org/master/doc/py_tutorials/py_core/py_basic_ops/py_basic_ops.html#exercises
¿Qué hace plt.imshow (img1, ‘gris’)? Intenté buscar en Google y todo lo que pude entender fue que el argumento ‘gris’ era un mapa de color. Pero mi imagen (la imagen está en el sitio. Ver enlace) no se muestra en escala de grises. Intenté eliminar el segundo argumento. Así que el código era como plt.imshow (img1). Se ejecuta. La imagen permanece igual que antes. Entonces, ¿qué hace el segundo argumento ‘gris’? ¿Puede alguien explicarme todo esto? Cualquier ayuda apreciada. Gracias.
PD. Soy totalmente nuevo en Matplotlib
Cuando img1
tiene forma (M,N,3)
o (M,N,4)
, los valores en img1
se interpretan como valores RGB o RGBA. En este caso se ignora el cmap. Por la help(plt.imshow)
docstring :
cmap:
~matplotlib.colors.Colormap
, opcional, predeterminado: NingunoSi Ninguno, por defecto rc
image.cmap
value.cmap
se ignora cuandoX
tiene información RGB (A)
Sin embargo, si img
fuera una matriz de forma (M,N)
, entonces el cmap controla el mapa de colores utilizado para mostrar los valores.
import numpy as np import matplotlib.pyplot as plt import mpl_toolkits.axes_grid1 as axes_grid1 np.random.seed(1) data = np.random.randn(10, 10) fig = plt.figure() grid = axes_grid1.AxesGrid( fig, 111, nrows_ncols=(1, 2), axes_pad = 0.5, cbar_location = "right", cbar_mode="each", cbar_size="15%", cbar_pad="5%",) im0 = grid[0].imshow(data, cmap='gray', interpolation='nearest') grid.cbar_axes[0].colorbar(im0) im1 = grid[1].imshow(data, cmap='jet', interpolation='nearest') grid.cbar_axes[1].colorbar(im1) plt.savefig('/tmp/test.png', bbox_inches='tight', pad_inches=0.0, dpi=200,)