当前位置: 首页 > 知识库问答 >
问题:

Matplotlib后端在使用对象检测API、QtAgg到Agg时发生变化

邓焱
2023-03-14

当使用带有目标检测API的matpltlib时,该图不会显示,但是在我导入一些测试方法之前,它可以正常工作。

我正在使用Anaconda虚拟环境,python 3.6和google对象检测API。

import matplotlib.pyplot as plt

import tensorflow as tf

from matplotlib import patches

from object_detection.anchor_generators.multiple_grid_anchor_generator import create_ssd_anchors

from object_detection.models.ssd_mobilenet_v2_feature_extractor_test import SsdMobilenetV2FeatureExtractorTest

from object_detection.models.ssd_mobilenet_v2_feature_extractor_test import SsdMobilenetV2FeatureExtractorTest

变化发生在最后一行

from object_detection.models.ssd_mobilenet_v2_feature_extractor_test import SsdMobilenetV2FeatureExtractorTest"

之前,我可以像plt一样显示图形。子图(2,2),我得到弹出的数字和以下内容:

(<Figure size 640x480 with 4 Axes>,
array([[<matplotlib.axes._subplots.AxesSubplot object at 0x7f4615eb8ba8>,
     <matplotlib.axes._subplots.AxesSubplot object at 0x7f4614d320f0>],
    [<matplotlib.axes._subplots.AxesSubplot object at 0x7f4614ce36a0>,
     <matplotlib.axes._subplots.AxesSubplot object at 0x7f4614c92c50>]],
   dtype=object))
WARNING: The TensorFlow contrib module will not be included in TensorFlow 2.0.
For more information, please see:
  * https://github.com/tensorflow/community/blob/master/rfcs/20180907-contrib-sunset.md
  * https://github.com/tensorflow/addons

如果您依赖于此处未列出的功能,请提交问题。

plt.get_backend()显示Qt5Agg。但是在最后一行之后,这个数字没有弹出,尽管我确实从“plt.subplots(2,2)”得到了结果:

(<Figure size 640x480 with 4 Axes>,
 array([[<matplotlib.axes._subplots.AxesSubplot object at 0x7f460b8a5f60>,
     <matplotlib.axes._subplots.AxesSubplot object at 0x7f460b86b5c0>],
    [<matplotlib.axes._subplots.AxesSubplot object at 0x7f460a7b2fd0>,
     <matplotlib.axes._subplots.AxesSubplot object at 0x7f460a7cb630>]],
   dtype=object))

现在我输入“plt.get_backend()”时,显示的是“Agg”,而不是之前的“Qt5Agg”。“plt.show()”抛出一个错误:

UserWarning: Matplotlib is currently using agg, which is a non-GUI backend, so cannot show the figure.
  #!/usr/bin/env python2

我使用的解释器是

~/anaconda3/envs/py36/bin/python

这里的环境有变化吗?

最后一行的脚本可以在这里找到

非常感谢您的宝贵时间!

共有2个答案

钱安和
2023-03-14

解决了。我在本地虚拟环境中运行,尝试了几种建议的解决方案,但都没有成功。我尝试了上面方云飞建议的方法,但后来意识到,通过注释掉代码行< code > import matplotlib~/models/research/html" target="_blank">object _ detec ion/utils/visualization _ utils . py文件夹中的matplotlib.use('Agg') 还不够。我通过将这段代码放入我的脚本体中发现了这一点:< code>print('matplotlib backend= ',matplotlib . get _ back end())因为它仍然返回“agg”,所以我必须在脚本的import部分的末尾添加这个< code > matplotlib . use(' ma cosx ')。我在装有macOS Big Sur的MacBook Pro上运行

锺离赤岩
2023-03-14

解决了的。在~/models/research/object_detection/utils/visualization_utils中找到了这一行。页码:

import matplotlib; matplotlib.use('Agg')  # pylint: disable=multiple-statements

只需评论它并且工作正常。

 类似资料:
  • 我试图根据从API获得的用户数据显示一些卡片。但是这个错误一直显示:`警告:React检测到PlanCard调用的钩子顺序发生了变化。如果不修复,这将导致错误和错误。更多信息,请阅读钩子的规则 > 使用状态使用状态 使用状态使用状态 使用状态使用状态 使用效果使用效果 未定义的useContext ^^^^^^^^^^^^^^ ` 这是我所有的计划卡文件 这也是我的提取计划代码:

  • 我试图用pyplot绘制一个简单的图,例如: 但该图没有出现,我得到以下消息: 我在几个地方看到,必须使用以下方法更改matplotlib的配置: 我这样做了,但随后得到一个错误消息,因为它找不到模块: 然后,我尝试使用 (在虚拟环境中)安装“tkinter”,但它没有找到它: 我还应该提到,我正在使用虚拟环境在Pycharm Community Edition IDE上运行所有这些,并且我的操作

  • 我想将Spyder设置为使用非交互式matplotlib后端,这样就不会弹出绘图图形,但我仍然可以将图形保存到文件中,如以下提示所示。 然而,看起来Spyder会自动导入matplotlib并在内部某个地方设置后端,所以我对的任何调用都会弹出一个错误,说MPL已经被调用。 Prefs显示“自动导入PyLab”已禁用。此外,下拉列表中没有“Agg”后端。 如何使用非交互式后端? 或者最好是:如何再次

  • 嗨,我正在做的。我已经遵循了回购中的所有主要指示,直到现在它一直运行良好。但是一些奇怪的错误开始突然出现。我之前使用的是,现在切换到。 同时使用命令生成推理图 我得到以下错误: 回溯(最近一次调用):文件“/home/user/anaconda3/envs/my_env/lib/python3.6/site packages/tensorflow/python/client/session.py”

  • 问题内容: 我有两种方法来从Android内部存储中的文件进行加密保存和解密加载对象。 加密和保存过程已完成,没有任何问题,但是当我要加载对象时, 我搜索的次数越来越多,但没有找到解决问题的方法。所有其他解决方案都是为了延长插座寿命或类似的。 我的代码如下: 保存方法:(工作正常) 加载方法:(无法从中加载对象) 公开的保存和加载方法: 问题答案: 您正在犯至少两个主要错误。 您必须使用与加密相同