当前位置: 首页 > 工具软件 > blog-backend > 使用案例 >

Matplotlib is currently using agg, which is a non-GUI backend, so cannot show the figure

乐成济
2023-12-01

项目场景

安装TensorFlow/ObjectDetection API后将原本在jupyter notebook下运行的object_detection_tutorial.ipynb文件内容复制到py文件中,使用pycharm运行


问题1

问题描述:

出现报错:%matplotlib inline:invalid syntax

原因分析:

%matplotlib inline写法是ipython的,pycharm不支持

解决方案:

将这一行注释掉即可解决报错
但此时仍不显示图片,需要在程序显示图片部分的最后添加一行代码:

plt.show()

但程序仍未显示图片,经检查,在画图程序前,图片已读取到工作区,继续往下看


问题2

问题描述:

出现报错:Matplotlib is currently using agg, which is a non-GUI backend, so cannot show the figure

原因分析:

如错误提示中所示,agg没有图形显示界面,因此需要切换其他终端

解决方案:

查到的大多解决方案都是在前面import部分添加:

import matplotlib
matplotlib.use('TkAgg') 

部分人反映问题已解决,但我的程序仍报相同错误。奇怪的是,前面已经通过代码将终端修改为TkAgg,但报错中仍提示现在在使用的是Agg终端。
在每个import程序后加入一行代码

print(matplotlib.get_backend())

查看此时使用的终端类型,可以观察到,在

from utils import visualization_utils as vis_util

这行语句后,终端类型被修改回Agg。进入visualization_utils.py,从中按Ctrl F查找‘Agg’,可以看到第26行的语句

import matplotlib; matplotlib.use('Agg')

声明了使用的终端类型,程序运行到这里时,前面自定义的终端被替换,因此报同样的错。将这一行的Agg替换为TkAgg(或者其他的终端,如Qt5Agg)即可解决,程序成功画图。


参考文章

https://blog.csdn.net/neninee/article/details/87972040

 类似资料:

相关阅读

相关文章

相关问答