簡體   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