【发布时间】:2020-01-31 15:52:29
【问题描述】:
所以,我有一个形状的 ndarray:(28, 28, 1),我想使用双三次插值将其放大到 (33, 33, 1)。
这是我通过网上搜索得到的:
import numpy as np
from PIL import Image as pil_image
...
img = np.array(pil_image.fromarray(img).resize(intermediate_dim, pil_image.BICUBIC))
# print(img.shape) -> (28, 28, 1), print(intermediate_dim) -> (33, 33)
但我不断收到错误消息:
回溯(最近一次通话最后一次):
文件“filters.py”,第 256 行,在
可视化层(mnist,LAYER_NAME)
文件“filters.py”,第 232 行,位于 visual_layer
img_loss = _generate_filter_image(input_img, output_layer.output, f)
_generate_filter_image 中的文件“filters.py”,第 161 行 img = np.array(pil_image.fromarray(img).resize(intermediate_dim, pil_image.BICUBIC))
文件“BlaBlaBla\Python37\site-packages\PIL\Image.py”,第 2682 行,在 fromarray
raise TypeError("无法处理此数据类型:%s, %s" % typekey)
TypeError: 无法处理此数据类型:(1, 1, 1), |u1
看到这个后,我尝试使用img.astype(np.uint8),但没有任何帮助。
我做错了什么?
附:我确定该数组包含合法值(来自 [0, 255] 的整数)
【问题讨论】:
-
请显示您的代码,包括您的
import语句以及您如何加载图像。另外,请出示您的图片。 -
@MarkSetchell 关于加载...这是来自 Keras CNN 的过滤器。我不想在我的问题中涉及机器学习的东西,因为它“不应该”重要,这只是我想用作图像灰度值的数字矩阵。
-
@MarkSetchell 我可以上传我使用
pyplot保存的图片的原始比例 28x28 版本,但它看起来就像噪点。 -
您可能需要
np.squeeze(),因为您的数组是 (28,28,1) 而不是 (28,28)。 -
你检查过
img.dtype()是np.uint8吗?
标签: python image numpy python-imaging-library