如何在Bokeh中显示TIFF图像?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Bokeh中显示TIFF图像?相关的知识,希望对你有一定的参考价值。

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

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

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

按照Bokeh docs,在Bokeh中,像素是相对于颜色图解释的1D数字。

如何将3D RGB TIFF阵列映射到1D Bokeh色彩映射索引数组,以及我应该使用什么色彩映射?

This post建议我应该写一个名为RGBAColorMapper的东西。我怎么做?

还有一些叫做image_rgba的东西是4D像素,我怎样才能将3D像素转换为4D才能使用它?

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

答案

您可以使用PIL包将tiff图像转换为rgba。然后用image_rgba直接绘制它。 tiff文件是从http://www-eng-x.llnl.gov/documents/tests/tiff.html下载的,根据SO答案发布了here

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)

enter image description here

以上是关于如何在Bokeh中显示TIFF图像?的主要内容,如果未能解决你的问题,请参考以下文章

使用光栅显示 tiff 图像的特定部分,而无需加载整个文件

如何在 R 中保存与输入 tiff 完全相同尺寸的 tiff 背景图像

ImageJ 16 位照片到 tiff 值

如何将 tiff 图像保存到新的 npy 文件中?

如何在 iPad 上创建 TIFF

如何在 Python OpenCV 中读取 TIFF 图像的 alpha 通道?