Я пытаюсь отфильтровать изображение RGBA по его альфа-значению, например, с помощью обратных вызовов Bokeh.Я изучаю эту библиотеку меньше недели, поэтому мои знания о ней действительно сырые.Из API примера я не совсем понял, как работать с этими обратными вызовами.Мой подход к достижению того, что я хотел, заключался в следующем:
### RGBA Image
N = 20
img = np.empty((N,N, 4), dtype=np.uint8)
for i in range(N):
for j in range(N):
img[i, j, 0] = int(i/N*255)
img[i, j, 1] = 158
img[i, j, 2] = int(j/N*255)
img[i, j, 3] = np.random.randint(1, 255)
mask = img[:, :, 3]
img = np.squeeze(img.view(np.uint32))
source = ColumnDataSource(data=(dict(image=[img],
x=[0],
y=[0],
dw=[10],
dh=[10])))
p = figure(x_range=(0,10), y_range=(0,10))
p.image_rgba(source=source, image='image', x='x', y='y', dw='dw', dh='dh')
### Threshold Slider
def slider_callback(source=source):
data = source.data
img = data['image']
img = img * (mask > cb_obj.value).astype(int)
source.change.emit();
t_slider = Slider(start=0, end=255, value=255, step=1,
title="Threshold", width=140,
callback=CustomJS.from_py_func(slider_callback))
l = layout([t_slider, p])
curdoc().add_root(l)
show(l)
Поскольку я не вижу никаких изменений в графике при изменении значения ползунка, я думаю, что я не понял, как использовать этот обратный вызов.