gpt4 book ai didi

python - matplotlib "fail to allocate bitmap"经过一些迭代

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

我找不到避免此崩溃的解决方案。

我已经清理了附加的代码,因为它只包含问题而不是其他内容。

无论图像大小,程序在 368 次迭代后崩溃。

我也尝试了我在论坛中可以找到的方法,但没有找到解决方案( plt.close('all'), gc.collect().... )。

import matplotlib.pyplot as plt
import cv2


compteur = 0
image = cv2.imread(r"D:\OneDrive\Bureau\New folder\12345.jpg")


while True:

print('1')
ax_user = plt.imshow(image)

print('2')
plt.close('all')

print (f'\n{compteur}:\t')
compteur += 1



367:
1
2

368:
1
Fail to allocate bitmap

最佳答案

根据 this post ,这是 TkAgg 后端的问题。

I was able to get it to work using:

reload(matplotlib)
matplotlib.use('Agg')

I'll have to beat on it some more to see if this is robust.

I saw the error message in this code:

http://search.cpan.org/src/NI-S/Tk-804.027/pTk/mTk/win/tkWinDraw.c

if(!bitmap) {
panic("Fail to allocate bitmap\n");
DeleteDC(dcMem);
TkWinReleaseDrawableDC(d, dc, &state);
return;
}

我不清楚为什么该 C 源代码中的 bitmap 为空,但我注意到 Python 内存使用量随着后续调用而不断增加以创建另一个绘图/图像/图形,不管是否使用 plt.close('all')plt.clf()gc.collect() 等,所以它的创建失败可能与此有关。例如,我没有注意到 Agg 后端有相同的行为。

可以在 docs 中阅读有关后端选项的更多信息,或检查 matplotlib.use() 的文档:

use(backend, *, force=True)
Select the backend used for rendering and GUI integration.

Parameters
----------
backend : str
The backend to switch to. This can either be one of the standard
backend names, which are case-insensitive:

- interactive backends:
GTK3Agg, GTK3Cairo, MacOSX, nbAgg,
Qt4Agg, Qt4Cairo, Qt5Agg, Qt5Cairo,
TkAgg, TkCairo, WebAgg, WX, WXAgg, WXCairo

- non-interactive backends:
agg, cairo, pdf, pgf, ps, svg, template

or a string of the form: ``module://my.module.name``.

force : bool, default: True
If True (the default), raise an `ImportError` if the backend cannot be
set up (either because it fails to import, or because an incompatible
GUI interactive framework is already running); if False, ignore the
failure.

See Also
--------
:ref:`backends`
matplotlib.get_backend

关于python - matplotlib "fail to allocate bitmap"经过一些迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67671961/

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