matplotlib中plot.show()不显示图片的问题

在用目标检测API进行模型测试时,测试结果只有白框没有图,如下

                                                                      

      查阅资料发现出现这种情况一般有两种原因,一是调用图片显示的语法不对,第二种是跟matplotlib的后端有关,还有一种是调用的库的模块不同导致的。

1.1 调用图片显示的语法不对

      解决办法,见《TensorFlow笔记(七)——基于matplotlib.pyplot函数的图片显示与保存

1.2 第二个原因

      一般matplotlib默认的backend使用的是agg,或template,此时是无法显示图片的,agg库不支持【1】【2】

解决办法:

1. 查看当前的系统后端

>>> import matplotlib

>>>matplotlib.get_backend() #查看当前系统的后端

2. 如果是Agg,则找到matplotlibrc的路径,将backend改为Qt4Agg或其他后端。

先把自己所支持的backends打印出来看一下,

扫描二维码关注公众号,回复: 11107934 查看本文章

>>>import matplotlib.rcsetup as rcsetup
>>>print(rcsetup.all_backends)
['GTK3Agg', 'GTK3Cairo', 'MacOSX', 'nbAgg', 'Qt4Agg', 'Qt4Cairo', 'Qt5Agg', 'Qt5Cairo', 'TkAgg', 'TkCairo', 'WebAgg', 'WX', 'WXAgg', 'WXCairo', 'agg', 'cairo', 'pdf', 'pgf', 'ps', 'svg', 'template']

找到matplotlibrc的路径,将backend改为TkAgg或者Qt4Agg或其他后端

>>> matplotlib.matplotlib_fname()
C:\Users\Administrator\.matplotlib\matplotlibrc

保存后,重启相关的编译软件。

我按照这两个方法改了,都没用,分析可能是第三个原因

1.3 调用的库的模块问题

运行目标检测API测试图片时,会出现如下情况

plt.imshow()可以打印出来图像的数字形式,但是就是无法可视化的显示出来,这个时候有一种解决的办法如下所示:

无法显示图片可能是调用的库的中不同模块导致的问题。

解决办法【5】【6】:

     matplotlib通过pyplot模块提供了一套和MATLAB类似的绘图API,将众多绘图对象所构成的复杂结构隐藏在这套API内部。此外,matplotlib还提供了一个名为pylab的模块,其中包括了许多NumPy和pyplot模块中常用的函数,方便用户快速进行计算和绘图,十分适合在IPython交互式环境中使用。这个时候此模块不行,换成另一个模块。如下:将

from matplotlib import pyplot as plt

换成:

import pylab

import matplotlib.pyplot as plt

pylab库,在最后加上

pylab.show()


结果可以显示了。
 

参考:

【1】matplotlib中plot.show()不显示图片的问题:从后端改

【2】使用matplotlib时pyplot.show()不显示图像的问题:从后端改

【3】python之matplotlib中plt.show()不显示图的解决办法

【4】解决matplotlib库show()方法不显示图片:从代码角度改

【5】Python中plt.imshow(image)无法显示图片解决办法:改库

【6】python中plt.imshow(img)显示不了图片:改库

发布了150 篇原创文章 · 获赞 200 · 访问量 37万+

猜你喜欢

转载自blog.csdn.net/qq_37764129/article/details/100730690
今日推荐