Matplotlib:imshow中cmap的功能是什么?

Cli*_*ive 8 python opencv matplotlib imshow colormap

我正在尝试使用python学习opencv并遇到以下代码:

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()
Run Code Online (Sandbox Code Playgroud)

来源:http://docs.opencv.org/master/doc/py_tutorials/py_core/py_basic_ops/py_basic_ops.html#exercises

plt.imshow(img1,'grey')有什么作用?我尝试搜索谷歌,我所能理解的是"灰色"参数是彩色地图.但我的图像(图片在网站上有图片.请参阅链接)不会以灰度显示.我尝试删除第二个参数.所以代码就像plt.imshow(img1).它执行.图像与以前保持一致.那么第二个参数"灰色"是做什么的呢?有人可以向我解释这一切吗?任何帮助赞赏.谢谢.

PS.我对Matplotlib完全不熟悉

unu*_*tbu 16

img1具有形状(M,N,3)或时(M,N,4),值将img1被解释为RGB或RGBA值.在这种情况下,cmap将被忽略.每help(plt.imshow)文档字符串:

cmap : ~matplotlib.colors.Colormap,可选,默认值:无

如果为None,则默认为rc image.cmap值.具有RGB(A)信息cmap时被忽略 X

但是,如果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,)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • colormap是一个将数字映射到颜色的字典.Matplotlib提供了许多[内置颜色图](http://wiki.scipy.org/Cookbook/Matplotlib/Show_colormaps).如果你有一个2D数组,比如上面的`data`,每个网格点的值都是0到1之间的浮点数.`gray`色彩映射将0映射为黑色,1映射为白色.`jet` colormap将0映射为蓝色,将1映射为红色.请参阅链接以直观显示颜色. (2认同)