Matplotlib 图像显示的问题总结

Matplotlib是一个优秀的绘图库,用于在开发中,验证数据。然而,在MacOS + PyCharm的开发环境中,存在有一些问题,其中包括:

  1. backend
  2. imshow,opencv
  3. int or float
  4. jupyter
  5. _tkinter
Matplotlib

backend

验证Matplotlib的配置文件.matplotlib/matplotlibrc,将backend项修改为TkAgg,如下:

backend      : TkAgg

或者,在Python文件中,直接指定,如下:

import matplotlib
matplotlib.use('TkAgg')

imshow

在PyCharm中,调用Matplotlib的imshow()显示图像,需要额外使用pylab的show(),否则无法显示,如下:

import matplotlib.pyplot as plt

image = cv2.imread(img_path)
plt.imshow(image)
pylab.show()
image

由于OpenCV读取图像的通道是BGR,而Matplotlib的通道是RGB,需要转换,调用cv2.cvtColor(),如下:

image = cv2.imread(img_path)
plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
pylab.show()
image

int or float

Matplotlib显示图像,如果是01区间,值为float,如果是0255区间,值为int,需要转换,否则无法显示,空白图像,报错:

Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers).

转换数据格式,调用astype()即可,如下:

image = cv2.imread(img_path)
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
image = img_to_array(image)
image = image.astype(int)  # 0~255转换为int
plt.imshow(image)
pylab.show()

jupyter

jupyter

Jupyter是可交互的web端开发工具,Matplotlib也可集成在其中,需要添加%matplotlib inline,激活内置的Matplotlib,如下:

import matplotlib
import numpy as np
import matplotlib.pyplot as plt

%matplotlib inline

No module named '_tkinter'

Matplotlib在Ubuntu服务器上,可能导致的问题,找不到_tkinter,错误如下:

ImportError: No module named '_tkinter', please install the python3-tk package

安装python3-tk包,即可:

sudo apt-get install python3-tk

That's all! Enjoy it!

你可能感兴趣的:(Matplotlib 图像显示的问题总结)