Matplotlib:imshow中的cmap的功能是什么? [英] Matplotlib : What is the function of cmap in imshow?
问题描述
我正在尝试使用python学习opencv,并在下面遇到了以下代码:
I'm trying to learn opencv using python and came across this code below:
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,但我唯一能理解的是,灰色"参数是彩色地图.但是我的图像(网站上有图片.请参阅链接)没有以灰度显示.我尝试删除第二个参数.因此,代码就像plt.imshow(img1).它执行.图像与以前相同.那么第二个参数灰色"是做什么的呢?有人可以向我解释所有这些吗?任何帮助表示赞赏.谢谢.
What does plt.imshow(img1, 'gray') do? I tried searching Google and all I could understand was that the 'gray' argument was a Color map. But my image (pic is there on the site. see link) is not displayed in grayscale. I tried removing the second argument. So the code was like plt.imshow(img1). It executes. The image remains same as before. Then what does the second argument 'gray' do? Can someone explain all this to me? Any help appreciated. Thanks.
PS.我对Matplotlib完全陌生
PS. I'm totally new to Matplotlib
推荐答案
当img1
具有形状(M,N,3)
或(M,N,4)
时,img1
中的值将解释为RGB或RGBA值.在这种情况下,将忽略cmap.每个 help(plt.imshow)
文档字符串:
When img1
has shape (M,N,3)
or (M,N,4)
, the values in img1
are interpreted as RGB or RGBA values. In this case the cmap is ignored. Per the help(plt.imshow)
docstring:
cmap:
~matplotlib.colors.Colormap
,可选,默认值:无
cmap :
~matplotlib.colors.Colormap
, optional, default: None
如果为None,则默认为rc image.cmap
值. cmap
在以下情况下被忽略
X
具有RGB(A)信息
If None, default to rc image.cmap
value. cmap
is ignored when
X
has RGB(A) information
但是,如果img
是形状为(M,N)
的数组,则cmap控制用于显示值的颜色图.
However, if img
were an array of shape (M,N)
, then the cmap controls the colormap used to display the values.
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,)
这篇关于Matplotlib:imshow中的cmap的功能是什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!