繁体   English   中英

如何在 Bokeh 中显示 TIFF 图像?

[英]How do I display a TIFF image in Bokeh?

我可以将 TIFF 图像作为 NumPy 数组加载到 memory 中,其中每个像素由一个 3 元素 RGB 向量表示:

from PIL import Image
import numpy as np
arr=np.array(Image.open(imgfn))

例如,上面的 arr 可能具有形状 (2469,2858,3)。

按照Bokeh 文档,在 Bokeh 中,像素是根据颜色 map 解释的一维数字。

如何将 map 我的 3D RGB TIFF 数组转换为一维散景颜色图索引数组,我应该使用什么颜色图?

这篇文章建议我应该写一个叫做 RGBAColorMapper 的东西。 我怎么做?

还有一个叫做image_rgba的东西,它是一个 4D 像素,我如何将 3D 像素转换为 4D 以使用它?

基本上我正在寻找与 MatPlotLib imshow 相同的功能。

您可以使用PIL软件包将tiff图像转换为rgba。 然后使用image_rgba可以很容易地进行绘制。 按照此处发布的SO回答,从http://www-eng-x.llnl.gov/documents/tests/tiff.html下载了tiff文件。

import numpy

from PIL import Image
from bokeh.plotting import figure, show

im = Image.open('a_image.tif')
im = im.convert("RGBA")
# uncomment to compare
#im.show()
imarray = numpy.array(im)

p = figure(x_range=(0,10), y_range=(0,1), width=1000, height=200)

p.image_rgba(image=[imarray], x=0, y=0, dw=10, dh=1)

show(p)

在此处输入图片说明

我不确定以前的解决方案是否有效,tiff 不再存在,所以我无法对其进行测试。 无论如何,对于任何其他图像,请执行以下操作:

from PIL import Image
import numpy as np 
from bokeh.plotting import figure, output_notebook, show

output_notebook()

#load image
im = Image.open('Segment_image.png') # just replace any image that you want here
imarray = np.array(im.convert("RGBA"))

p = figure()
plotted_image = p.image_rgba(image=[imarray.view("uint32").reshape(imarray.shape[:2])], x=0, y=0, dw=imarray.shape[0], dh=imarray.shape[1])
show(p)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM