我正在做一个项目,它使用ipywidgets和bqplot来显示图像并与之交互。使用ipywidgets和open cv,我可以修改图像、保存图像并更新窗口小部件的值。但是我还需要bqplot的on_click_element方面,所以我使用上一个小部件。我仍然无法弄清楚如何在bqplot中使用小部件做同样的事情。
我想避免重画洞的事情,但如果需要,它将不得不关闭并只重绘小部件图像,因为这是一个更大的小部件集的一部分。例如,我想使用任意treshold对图像进行二值化。
从这里我获得了关于如何使用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、ipython 7.5.0、ipywidgets 7.5.1、bqplot 0.12.10
发布于 2020-06-19 19:10:56
通过分配新图像来更新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 = ipyimage2https://stackoverflow.com/questions/62018899
复制相似问题