在python中调整4维数组的图像大小

在python中调整4维数组的图像大小,python,python-3.x,lasagne,Python,Python 3.x,Lasagne,我正在使用python3 我有一个来自类型unit8和大小(60000,1,28,28)的变量数据,这意味着我有60000图像,有一个通道,大小为28x28像素。 现在我想将图像的大小调整为60x60像素,以便获得(60000,1,60,60) 有人能帮我吗?如果你有opencv,你可以使用 img = pics[i][0] new_img = cv2.resize(img, None, fx=2, fy=2, interpolation = cv2.INTER_CUBIC) 现在,您的i第个

我正在使用
python3

我有一个来自类型
unit8
和大小
(60000,1,28,28)
的变量数据,这意味着我有
60000
图像,有一个通道,大小为
28x28
像素。
现在我想将图像的大小调整为
60x60
像素,以便获得
(60000,1,60,60)


有人能帮我吗?

如果你有
opencv
,你可以使用

img = pics[i][0]
new_img = cv2.resize(img, None, fx=2, fy=2, interpolation = cv2.INTER_CUBIC)
现在,您的
i
第个图像从
x
y
两个方向(这里
pics
numpy
数组和
(60000,1,28,28)
图像)按系数2调整大小。如果您不使用
opencv
,您可以安装它(搜索谷歌)

如果没有,您可以使用
PIL
软件包。您可以使用

pip install Pillow
并使用以下代码调整大小

from PIL import Image
img = pics[i][0]
im = Image.fromarray(np.rollaxis(img, 0,3))
new_im = im.resize((new_x, new_y), Image.BICUBIC)

您可以使用
for循环
将这些图像放入
(60000,1,x,y)
的数组中。如果您使用的是Keras,请在Keras模型设置中使用此设置

model = Sequential()
model.add(Lambda(lambda x: tf.image.resize_images(x,[66,200]), input_shape=(160,320,3)))

下面的解决方案对我有效。理解列表后,列表将用numpy堆叠回一个批次:

import cv2
import numpy as np

target_shape = (60, 60)

def _resize_image(image, target):
   return cv2.resize(image, dsize=(target[0], target[1]), interpolation=cv2.INTER_LINEAR)

image = [_resize_image(image=i, target=target_shape) for i in data]
data_batch = np.stack(image, axis=0)