Обновление виджета изображений bqplot - PullRequest
0 голосов
/ 26 мая 2020

Я работаю над проектом, который использует ipywidgets и bqplot для отображения и взаимодействия с изображением. Используя ipywidgets и открыв cv, я могу изменить изображение, сохранить его и обновить значение виджета. Но мне также нужен аспект on_click_element в bqplot, поэтому я использую виджет из последнего. У меня все еще возникают проблемы с тем, как сделать то же самое с виджетом в bqplot.

Я бы не хотел перерисовывать дырочку, но при необходимости ей пришлось бы закрыть и перерисовать только изображение виджета, так как это часть большего набора виджетов. Например, я хотел бы преобразовать изображение в двоичную форму, используя произвольный порог.

Отсюда я получил информацию о том, как использовать виджет изображения bqplot: https://github.com/bqplot/bqplot/blob/master/examples/Marks/Object%20Model/Image.ipynb

Я использую что-то очень похожее на это, чтобы создать отображаемый виджет.

from IPython.display import display
import ipywidgets as widgets
import bqplot as bq

with open('chelsea.png', 'rb') as f:
    raw_image = f.read()

ipyimage = widgets.Image(value=raw_image, format='png')
x_sc = bq.LinearScale()
y_sc = bq.LinearScale()
bq_image = bq.Image(image=ipyimage, scales={'x':x_sc, 'y':y_sc})
img_ani = bq.Figure(marks=[bq_image], animation_duration=400)
display(img_ani)

После этого я не могу обновить фигуру, не перерисовав дырку. Есть идеи?

jupyter 5.7.8, i python 7.5.0, ipywidgets 7.5.1, bqplot 0.12.10

1 Ответ

0 голосов
/ 19 июня 2020

Обновите метку изображения bqplot, назначив новое изображение ....

with open("chelsea2.png", 'rb') as f:
    raw_image2 = f.read()

# ipyimage.value =  raw_image2  # This doesn't seems to sync with widget display. Would require a redisplay of bqplot figure

# create new ipywidgets image and assign it to bqplot image
ipyimage2 = widgets.Image(value=raw_image2, format='png')
bq_image.image = ipyimage2
...