首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >绘制不同结果的绘制彩色地图

绘制不同结果的绘制彩色地图
EN

Stack Overflow用户
提问于 2014-12-02 23:20:00
回答 2查看 347关注 0票数 2

我在图片上找到了不同的结果,这取决于我如何应用我的彩色地图,我不知道为什么。

当我把彩色地图作为显示图像的插件时,一切正常,当我直接对图像做时,它会完全变黑。我很困惑,因为我想把彩色地图应用到我想要保存(而不是显示)的图像上,我不知道如何正确地处理它。

代码语言:javascript
复制
import matplotlib.pyplot as plt
from skimage import data
from skimage.color import rgb2hed


ihc_rgb = data.immunohistochemistry()
ihc_hed = rgb2hed(ihc_rgb)

fig, axes = plt.subplots(2, 2, figsize=(7, 6))
ax0, ax1, ax2, ax3 = axes.ravel()

ax0.imshow(ihc_hed[:, :, 0], cmap=plt.cm.gray)
ax0.set_title("plugin")

ax1.imshow(plt.cm.gray(ihc_hed[:, :, 0]))
ax1.set_title("direct")

这事有点进展

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-12-03 02:00:41

ihc_hed[:, :, 0]内部的值介于-1.37至-0.99之间。imshow的默认行为是显示整个范围的值。另一方面,plt.cm.gray对值介于0和1之间的图像进行操作。

自动重标度在第一种情况下是在保存,而不是在第二种情况下。我建议始终在固定范围内使用imshowimshow(image, vmin=0, vmax=1, cmap='gray')

票数 3
EN

Stack Overflow用户

发布于 2014-12-03 10:22:47

从您对Stefan van der Waltanswer的评论中,我得出结论,您不想保存matplotlib图形,而是直接保存图像。正如斯特凡所指出的,在使用颜色图之前,需要缩放值。Matplotlib提供了类Normalize

代码语言:javascript
复制
import matplotlib.pyplot as plt
import matplotlib.colors
from skimage import data
from skimage.color import rgb2hed

ihc_rgb = data.immunohistochemistry()
ihc_hed = rgb2hed(ihc_rgb)

fig, axes = plt.subplots(1, 3, figsize=(8, 3))
ax0, ax1, ax2 = axes.ravel()

ax0.imshow(ihc_hed[:, :, 0], cmap=plt.cm.gray)
ax0.set_title("plugin")

ax1.imshow(plt.cm.gray(ihc_hed[:, :, 0]))
ax1.set_title("direct")

norm = matplotlib.colors.Normalize()
gray_image = plt.cm.gray(norm(ihc_hed[:,:,0])) 

ax2.imshow(gray_image)
ax2.set_title("direct with norm")

for a in axes:
    a.xaxis.set_visible(False)
    a.yaxis.set_visible(False)

plt.gcf().tight_layout()
plt.show()

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27260871

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档