[英]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.