Matplotlib: Какова функция cmap в imshow?

Я пытаюсь изучить opencv с помощью python и наткнулся на этот код ниже:

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() 

источник: http://docs.opencv.org/master/doc/py_tutorials/py_core/py_basic_ops/py_basic_ops.html#exercises

Что делает plt.imshow (img1, 'gray')? Я пробовал искать Google, и все, что я мог понять, было то, что «серым» аргументом была цветовая карта. Но мой образ (pic присутствует на сайте, см. Ссылку) не отображается в оттенках серого. Я попытался удалить второй аргумент. Таким образом, код был похож на plt.imshow (img1). Он выполняется. Изображение остается таким же, как раньше. Тогда что делает второй аргумент «серый»? Может кто-нибудь объяснить мне все это? Любая помощь оценивается. Благодарю.

PS. Я совершенно не знаком с Matplotlib

Когда img1 имеет форму (M,N,3) или (M,N,4) , значения в img1 интерпретируются как значения RGB или RGBA. В этом случае cmap игнорируется. За help(plt.imshow) docstring :

cmap: ~matplotlib.colors.Colormap , необязательно, по умолчанию: нет

Если None, по умолчанию значение rc image.cmap . cmap игнорируется, когда X имеет информацию RGB (A)

Однако, если img был массивом формы (M,N) , тогда cmap управляет цветовой схемой, используемой для отображения значений.


 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,) 

введите описание изображения здесь

Interesting Posts