LoginSignup
4
2

More than 5 years have passed since last update.

bokehにてカラー画像を表示

Last updated at Posted at 2017-03-24

bokehでカラー画像を表示させるのに少し手間がかかったので残しておきます。

import numpy as np
from skimage import data
img = data.coffee()#サンプル画像読み込み

from bokeh.plotting import figure
from bokeh.io import show, output_notebook
output_notebook()

imgH, imgW, ch = img.shape

#int32にint8×4ch(RGBA)をviewを使って代入する
img_plt = np.empty((imgH,imgW), dtype=np.uint32)
view = img_plt.view(dtype=np.uint8).reshape((imgH, imgW, 4))
view[:, :, 0:3] = np.flipud(img[:, :, 0:3])#上下反転あり
view[:, :, 3] = 255

p = figure(x_range=(0,imgW), y_range=(0,imgH))
p.image_rgba(image=[img_plt], x=0, y=0, dw=imgW, dh=imgH)
show(p)

20170324_bokeh_color.PNG

追記

カラー画像とモノクロ画像を表示するコピペ用関数

def show(img):
    import numpy as np
    from bokeh.plotting import figure
    from bokeh.io import show, output_notebook
    output_notebook()    

    imgH =img.shape[0]
    imgW= img.shape[1]

    if(img.ndim == 3):#(imgH,imgW,ch)int8*3chのカラー画像を表示
        img_plt = np.empty((imgH,imgW), dtype=np.uint32)
        view = img_plt.view(dtype=np.uint8).reshape((imgH, imgW, 4))
        view[:, :, 0:3] = np.flipud(img[:, :, 0:3])#上下反転あり
        view[:, :, 3] = 255    
        p = figure(x_range=(0,imgW), y_range=(0,imgH), plot_width=imgW, plot_height=imgH)
        p.image_rgba(image=[img_plt], x=0, y=0, dw=imgW, dh=imgH)

    else:#(imgH,imgW)モノクロ画像を表示(スケーリングは自動)
        palette_256 = ['#%02x%02x%02x' %(i,i,i) for i in range(256)] #256段階で白黒表示用
        img = np.flipud(img)#上下反転あり
        p = figure(x_range=(0,imgW), y_range=(0,imgH), plot_width=imgW, plot_height=imgH)
        p.image(image=[img], x=0, y=0, dw=imgW, dh=imgH, palette=palette_256)

    show(p)

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2