我使用Python和Scipy来执行一些基本的图像处理。我已经将图像设置为灰度,并将其从高斯模糊中减去,作为边缘检测的一种形式。现在,我想在运行.imshow()命令时使其看起来很漂亮。例如,如果我使用其中一个默认色图,那么
matplotlib.pyplot.imshow(lena, cmap='binary')
其中lena是表示我所讨论图像的矩阵,图像显示为灰色背景。它看起来非常像this。
我希望图像看起来更清晰,只有两种真实颜色,白色和黑色,以及非常少(或没有)灰色。
由于SciPy中没有其他默认颜色映射可以做到这一点,我想我应该自己制作。但我担心我不能完全掌握scipy提供的documentation。
所以,让我说我有教程中的色彩图:
cdict = {'red': ((0.0, 0.0, 0.0),
(0.5, 1.0, 0.7),
(1.0, 1.0, 1.0)),
'green': ((0.0, 0.0, 0.0),
(0.5, 1.0, 0.0),
(1.0, 1.0, 1.0)),
'blue': ((0.0, 0.0, 0.0),
(0.5, 1.0, 0.0),
(1.0, 0.5, 1.0))}
my_cmap = matplotlib.colors.LinearSegmentedColormap('my_colormap', cdict, 256)
matplotlib.pyplot.imshow(lena, cmap=my_cmap)
如果我希望色彩图从0到0.5范围内仅为白色,并且从范围.5到1只有黑色,那该怎么看呢?感谢大家的帮助!
答案 0 :(得分:1)
我希望这样的事情:
cdict = {'red': ((0.0, 0.0, 0.0),
(0.5, 0.0, 0.0),
(0.5, 1.0, 1.0),
(1.0, 1.0, 1.0)),
'green': ((0.0, 0.0, 0.0),
(0.5, 0.0, 0.0),
(0.5, 1.0, 1.0),
(1.0, 1.0, 1.0)),
'blue': ((0.0, 0.0, 0.0),
(0.5, 0.0, 0.0),
(0.5, 1.0, 1.0),
(1.0, 1.0, 1.0))}
另见:http://matplotlib.org/examples/pylab_examples/custom_cmap.html
如果我错了,请原谅。我从来没有像你想要的那样创造跳跃。