Matplotlib:imshow中的cmap的功能是什么? [英] Matplotlib : What is the function of cmap in imshow?

查看:3386
本文介绍了Matplotlib:imshow中的cmap的功能是什么?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆