Matplotlib: ¿Cuál es la función de cmap en imshow?

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: Ninguno

Si Ninguno, por defecto rc image.cmap value. cmap se ignora cuando X 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,) 

introduzca la descripción de la imagen aquí