将内部数组另存为来自2d外部数组的图像

nkkqxpd9  于 2021-07-14  发布在  Java
关注(0)|答案(2)|浏览(238)

我有一个4d阵列的形状 (7496, 32, 32, 1) 7496个numpy阵列以32x32的灰度图像排列。
我想循环这个数组,并将它们全部保存为图像,jpg或bmp。任何方法都可以,无论是使用pil、opencv还是任何其他api或库,提前谢谢大家!
我已经设法做了一个单一的形象的做法,我只需要知道如何在一次去做它的规模。

for t in range(0, 1):
    plt.imshow(normal_imgs[t], cmap = 'gray')
    plt.show()

    cv2.imwrite(CWD + '/image_before.bmp', normal_imgs[t])
img_b3 = cv2.imread('image_before.bmp', 0)
equ3 = cv2.equalizeHist(img_b3)

# res = np.hstack((img_b,equ))

img_a3 = cv2.imwrite('image_after.bmp', equ3)
img_a_out3 = cv2.imread('image_after.bmp', 0)

文件名可以很简单,比如 normal_train_1, normal_train_2

toe95027

toe950271#

你差点就到了。

import os

for t in range(0, normal_imgs.shape[0]):
    original = normal_imgs[t]
    equalized = cv2.equalizeHist(original )
    cv2.imwrite(os.path.join(CWD, 'image_after.bmp'), equalized)
e3bfsja2

e3bfsja22#

您还可以使用pil保存图像:这将把图像保存为img1.jpg img2.jpg等。您应该更改path变量以获取保存位置和保存文件名。请注意,“l”模式只接受8位uint数组作为输入,因此使用 astype(np.uint8) ```
from PIL import Image
import numpy as np

imgs = np.random.randint(low=0, high=255,size=(20, 32, 32, 1))

imgs = imgs.reshape((20, 32, 32)).astype(np.uint8)
path = "./imgs/img{:d}.jpg"

for i, img in enumerate(imgs):
print(img.shape)
Image.fromarray(img, mode="L").save(path.format(i))

相关问题