如何将4d numpy数组保存到图像中

时间:2017-12-06 01:05:43

标签: python arrays image

我想创建一个图像date_set,其中包含来自一个大图像(1408,2048,3)的176个小图像(128 * 128 * 3)。 我做了以下事情: 步骤1。 加载大图像并将其转换为numpy数组。 (1408,2048,3)3d数组 第2步。 将它切成176块:(176,128,128,3)4d阵列 第3步。 我不知道如何在此步骤中保存来自4d阵列的176张图像。有谁能帮我解决这个问题? 非常感谢!

from astropy.io import fits
from astropy.utils.data import download_file
image_file = download_file('https://data.sdss.org/sas/dr12/boss/photoObj/frames/301/1035/3/frame-irg-001035-3-0011.jpg', cache=True )
image = imread(image_file)


def blockshaped(arr, nrows, ncols, c):
"""
Return an array of shape (n, nrows, ncols) where
n * nrows * ncols = arr.size

If arr is a 2D array, the returned array should look like n subblocks with
each subblock preserving the "physical" layout of arr.
"""
h, w = arr.shape[:2]
return (arr.reshape(h//nrows, nrows, -1, ncols, c)
           .swapaxes(1,2)
           .reshape(-1, nrows, ncols, c))

a= image[:1408, :]
b= blockshaped(a, 128, 128, 3)
b.shape

b.shape =(176,128,128,3)

1 个答案:

答案 0 :(得分:2)

这是一种可能的方法。

import numpy as np
import scipy.misc

images = np.zeros((176,128,128,3)) 
for i in range(len(images)):
    scipy.misc.imsave('date_set_' + str(i) + '.jpg', images[i,:,:,:])