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

运行ObjectDetection API示例遇到错误:Matplotlib is currently using agg, which is a non-GUI backend, so cannot show the figure.

项目场景

安装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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值