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

2024-10-02 12:34:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我是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)

然后错误弹出:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/zhongl/miniconda3/envs/tf2/lib/python3.7/site-packages/matplotlib/pyplot.py", line 2677, in imshow
    None else {}), **kwargs)
  File "/home/zhongl/miniconda3/envs/tf2/lib/python3.7/site-packages/matplotlib/__init__.py", line 1599, in inner
    return func(ax, *map(sanitize_sequence, args), **kwargs)
  File "/home/zhongl/miniconda3/envs/tf2/lib/python3.7/site-packages/matplotlib/cbook/deprecation.py", line 369, in wrapper
    return func(*args, **kwargs)
  File "/home/zhongl/miniconda3/envs/tf2/lib/python3.7/site-packages/matplotlib/cbook/deprecation.py", line 369, in wrapper
    return func(*args, **kwargs)
  File "/home/zhongl/miniconda3/envs/tf2/lib/python3.7/site-packages/matplotlib/axes/_axes.py", line 5679, in imshow
    im.set_data(X)
  File "/home/zhongl/miniconda3/envs/tf2/lib/python3.7/site-packages/matplotlib/image.py", line 690, in set_data
    .format(self._A.shape))
TypeError: Invalid shape (321, 327, 1) for image data

但毫无疑问,原来的形象已经改变了

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

Tags: inpyimagehomematplotliblibpackagesline
1条回答
网友
1楼 · 发布于 2024-10-02 12:34:08

错误消息的重要部分是:

TypeError: Invalid shape (321, 327, 1) for image data

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

The size of the last dimension of the output is 1, containing the Grayscale value of the pixels.

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

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

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).squeeze()   # <  !

plt.figure()
plt.imshow(image_gray)

希望有帮助

相关问题 更多 >

    热门问题