上下文:
Google有一个MNIST数据的电子表格。他们拍摄了(28, 28, 1)
张图像,并将其转换为(1, 784, 1)
行数据(784为28 * 28)。然后,他们对所有65k图像执行此操作。因此,它适合像这样的漂亮的Spritesheet:
https://storage.googleapis.com/learnjs-data/model-builder/mnist_images.png
我正在寻找自己的数据精灵。
我正在使用numpy / PIL,因此当我将图像转换为具有3个通道的numpy时。
问题: 我该如何将其展平,然后将其合并为平面图像,使其变成宽度为784,高度=图像数量的图像,全部为RGB。
此处的伪代码:
# Load image image
image_data = image.load_img("/path/to.png", target_size=(28, 28))
# Create shape (28, 28, 3)
np_train = np.array(image_data)
# Goal change (28, 28, 3) into (1, 784, 3)
# then add that to some final_image, building to final_image (num_images, 784, 3)
# then
img = Image.fromarray(final_image)
img=.show # spritesheet of image data for consumption
编辑: 结果:https://github.com/GantMan/rps_tfjs_demo/blob/master/spritemaker/makerps.py
答案 0 :(得分:1)
如果您要问的是如何将多个图像连接成一个图像,其中每一行代表原始数据集中的单个图像,那么reshape + concatenate应该可以解决问题:
# all_images is a list / iterator of 28x28x3 numpy arrays
final_image = np.concatenate([img.reshape(1, -1, 3) for img in all_images])
答案 1 :(得分:1)