gpt4 book ai didi

python - Matplotlib Canvas 作为 numpy 数组人工制品

转载 作者:太空狗 更新时间:2023-10-29 18:13:03 25 4
gpt4 key购买 nike

我想将 matplotlib 图转换为 numpy 数组。我已经能够通过直接访问渲染器的内容来做到这一点。但是,当我在 numpy 数组上调用 imshow 时,它看起来像原始图中不存在的沿边缘的混叠伪像。

我试过各种参数,但无法弄清楚如何修复 imshow 中的人工制品。如果我将图形保存到图像文件中,图像中的差异仍然存在。

注意,我要实现的是一种确认数组内容和我之前查看的图一样的方法。我认为这些人工制品可能不存在于 numpy 数组中,而是在 imshow 调用期间创建的。或许适当配置imshow可以解决问题。

import matplotlib.pyplot as plt
import numpy as np
from matplotlib.patches import Rectangle
import math

fig = plt.figure(frameon=False)
ax = plt.gca()
ax.add_patch(Rectangle((0,0), 1, 1, angle=45, color="red"))
ax.set_xlim(-2,2)
ax.set_ylim(-2,2)
ax.set_aspect(1)
plt.axis("off")
fig.canvas.draw()
plt.savefig("rec1.png")
plt.show()
X = np.array(fig.canvas.renderer._renderer)

fig = plt.figure(frameon=False)
ax = plt.gca()
plt.axis("off")
plt.imshow(X)
plt.savefig("rec2.png")
plt.show()

enter image description here

最佳答案

这些明显是重采样伪影,可以通过使用 plt.figimage 来避免。它专门向图中添加了未重新采样的图像。

plt.figimage(X)
plt.show()

请注意,这不适用于 Jupyter Notebook 中的 %matplotlib inline,但它可以很好地用于 %matplotlib notebook 和 GUI 后端。

关于python - Matplotlib Canvas 作为 numpy 数组人工制品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50437426/

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