我正在使用Python 3
。
我有来自unit8
类型和尺寸(60000, 1, 28, 28)
的可变数据,这意味着我有{1}个图像,其中包含1个频道和60000
像素的大小。<登记/>
现在我想将图片大小调整为28x28
像素,这样我就可以获得60x60
的大小
有人可以帮助我吗?
答案 0 :(得分:0)
如果您有opencv
,可以resize
使用,
img = pics[i][0]
new_img = cv2.resize(img, None, fx=2, fy=2, interpolation = cv2.INTER_CUBIC)
现在,您的i
图片会从x
和y
方向调整因子2的大小(此处pics
是您的{numpy
数组(60000, 1, 28, 28)
1}}图片)。如果您不使用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 loop
将这些图片放入(60000, 1, x ,y)
答案 1 :(得分:0)
如果您正在使用Keras,请在Keras模型设置中使用
model = Sequential()
model.add(Lambda(lambda x: tf.image.resize_images(x,[66,200]), input_shape=(160,320,3)))
答案 2 :(得分:0)
以下解决方案为我工作。理解列表后,列表将与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)