Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Matplotlib:cmap在imshow中的功能是什么?_Python_Opencv_Matplotlib_Imshow_Colormap - Fatal编程技术网

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

Python Matplotlib:cmap在imshow中的功能是什么?,python,opencv,matplotlib,imshow,colormap,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.copyMakeBorde

我正在尝试使用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()
资料来源:

plt.imshow(img1,“灰色”)做什么?我试着在谷歌上搜索,我所能理解的只是“灰色”的论点是一张彩色地图。但是我的图片(图片在网站上,请看链接)并没有以灰度显示。我试图消除第二个论点。所以代码就像plt.imshow(img1)。它执行。图像与以前一样。那么第二个参数‘格雷’是做什么的?有人能给我解释一下这一切吗?谢谢你的帮助。谢谢


注:我对Matplotlib完全陌生当
img1
具有形状
(m,N,3)
(m,N,4)
时,
img1
中的值被解释为RGB或RGBA值。在这种情况下,将忽略cmap。Per:

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

如果没有,则默认为rc
image.cmap
value
cmap
X
包含RGB(A)信息

但是,如果
img
是形状
(M,N)
的数组,则cmap控制用于显示值的颜色贴图



谢谢。你能解释一下cmap的用途吗?为什么我们要使用颜色映射?颜色映射是一个将数字映射到颜色的字典。Matplotlib提供了许多功能。当您使用二维数组时,例如上面的
数据
,每个网格点上的值都是介于0和1之间的浮点值。
gray
colormap将0映射为黑色,将1映射为白色。
jet
colormap将0映射为蓝色,将1映射为红色。请参阅链接,以获取中间颜色的视觉显示。更正:上面使用的
数据
数组具有正态分布的值;默认情况下,colormap会根据数据的范围调整颜色。@ubuntu:我理解了你的第一条评论,但在最后一条评论之后我感到困惑,这到底是什么意思?以前的彩色图像是用浮点数(2d,1通道)表示的,现在,我们想把它返回到rgb?@Hossein:因为
data=np.random.randn(10,10)
,所以
data
的最小值和最大值可能不同于0和1。
imshow
函数将
data
标准化,以便
min(data)
映射到0,而
max(data)
映射到1。然后应用颜色贴图。本报告的目的只是强调这一正常化步骤的存在。
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,)