Python 我想使用matplotlib显示由tensorflow 2.0转换的灰度图形

Python 我想使用matplotlib显示由tensorflow 2.0转换的灰度图形,python,tensorflow,matplotlib,Python,Tensorflow,Matplotlib,我是TensorFlow 2.0的新手,加载一个图形后,我想绘制由TensorFlow转换的灰度图形,不幸的是出现了一个错误 import tensorflow as tf import numpy as np import matplotlib.pyplot as plt im = tf.io.read_file('/home/1.png') image = tf.image.decode_png(im) image_gray = tf.image.rgb_to_grayscale(imag

我是TensorFlow 2.0的新手,加载一个图形后,我想绘制由TensorFlow转换的灰度图形,不幸的是出现了一个错误

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

im = tf.io.read_file('/home/1.png')
image = tf.image.decode_png(im)
image_gray = tf.image.rgb_to_grayscale(image)

plt.figure()
plt.imshow(image_gray)
然后错误弹出:

回溯(最近一次呼叫最后一次):
文件“”,第1行,在
imshow中的文件“/home/zhongl/miniconda3/envs/tf2/lib/python3.7/site packages/matplotlib/pyplot.py”,第2677行
没有其他{},**kwargs)
文件“/home/zhongl/miniconda3/envs/tf2/lib/python3.7/site packages/matplotlib/__init__.py”,第1599行,在内部
return func(ax,*map(sanitize_序列,args),**kwargs)
文件“/home/zhongl/miniconda3/envs/tf2/lib/python3.7/site packages/matplotlib/cbook/deprecation.py”,第369行,在包装器中
返回函数(*args,**kwargs)
文件“/home/zhongl/miniconda3/envs/tf2/lib/python3.7/site packages/matplotlib/cbook/deprecation.py”,第369行,在包装器中
返回函数(*args,**kwargs)
文件“/home/zhongl/miniconda3/envs/tf2/lib/python3.7/site packages/matplotlib/axes/_axes.py”,第5679行,在imshow中
im.set_数据(X)
set_数据中的文件“/home/zhongl/miniconda3/envs/tf2/lib/python3.7/site packages/matplotlib/image.py”,第690行
.格式(自身形状))
TypeError:图像数据的形状(321、327、1)无效
但毫无疑问,原来的形象已经改变了

plt.figure()
plt.imshow(image)
plt.show()

错误消息的重要部分是:

TypeError:图像数据的形状(321、327、1)无效

显然,TensorFlow以这种方式存储转换后的图像:

输出的最后一个维度的大小为1,包含像素的灰度值

尽管如此,Matplotlib无法以这种方式处理灰度图像的数据,但需要类似于
(321327)
的形状,即没有一维数据

由于您在这里处理的是NumPy数组,因此可以使用NumPy的方法来消除额外的维度:

将tensorflow导入为tf
将numpy作为np导入
将matplotlib.pyplot作为plt导入
im=tf.io.read_文件('/home/1.png')
image=tf.image.decode\u png(im)
image_gray=tf.image.rgb_to_grayscale(image.squence())#