gpt4 book ai didi

python - 从 bokeh==2.1.1 升级到 bokeh==2.2.0 会破坏 figure.image_rgba()

转载 作者:行者123 更新时间:2023-12-05 02:04:18 25 4
gpt4 key购买 nike

这段代码在使用 bokeh==2.1.1 时呈现图像(尽管是颠倒的):

from PIL import Image
import numpy as np
import requests

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

response = requests.get('https://upload.wikimedia.org/wikipedia/en/a/a9/Example.jpg', stream=True)
rgba_img = Image.open(response.raw).convert("RGBA")
numpy_img = np.array(rgba_img)

fig = figure()
plotted_image = fig.image_rgba(image=[np_img], x=50, y=50, dw=50, dh=50)
show(fig)

bokeh==2.2.0(以及更高版本)中运行完全相同的代码不会输出任何内容,也不会引发任何错误。

Bokeh release notes没有提及对 image_rgba()

的任何更改

最佳答案

错误在浏览器中的JS控制台(因为错误实际上发生在浏览器中,而不是在“python端”):

Unhandled Promise Rejection: Error: expected a 2D array

如果您查看 np_img,您会发现它不是二维数组:

In [3]: np_img.shape
Out[3]: (297, 275, 4)

In [4]: np_img.dtype
Out[4]: dtype('uint8')

Bokeh 需要 uint32 的 2D 数组,而不是 uint8 的 3D 数组,情况一直如此,文档中也进行了演示。过去有可能意外或无意地接受了 3D 数组(这就是发行说明中未注明任何更改的原因),或者在 NumPy 或 PIL 端转换为 NumPy 数组时可能发生了某些更改。无论如何,您都需要创建一个 2D View :

np_img = np.array(rgba_img)

np_img2d = np_img.view("uint32").reshape(np_img.shape[:2])

fig = figure()
plotted_image = fig.image_rgba(image=[np_img2d], x=50, y=50, dw=50, dh=50)

关于python - 从 bokeh==2.1.1 升级到 bokeh==2.2.0 会破坏 figure.image_rgba(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64490018/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com