通过下面的代码将npz格式的数据集转换成jpg图片的时候出现全黑的图片错误,代码如下:
import os
import numpy as np
from PIL import Image
import zipfile
import matplotlib.pyplot as plt
def npz_to_jpg(npz_folder, output_folder):
if not os.path.exists(output_folder):
os.makedirs(output_folder)
for file_name in os.listdir(npz_folder):
if file_name.endswith('.npz'):
file_path = os.path.join(npz_folder, file_name)
try:
# 确保文件是有效的 .npz 文件
with zipfile.ZipFile(file_path, 'r') as zip_ref:
zip_ref.testzip() # 测试文件完整性
# 加载 .npz 文件
npz_data = np.load(file_path)
for array_name in npz_data.files:
x = npz_data[array_name]
plt.imshow(x)
plt.axis('off')
plt.show()
print("查看数据类型", type(x))
print("查看数组元素数据类型", (x).dtype)
print("查看数组元素总数", (x).size)
print("查看数组的shape", (x).shape)
print("查看数组的维度", (x).ndim)
if x.ndim == 3 and x.shape[2] == 1:
x = np.squeeze(x, axis=2)
print("查看数据类型", type(x))
print("查看数组元素数据类型", (x).dtype)
print("查看数组元素总数", (x).size)
print("查看数组的shape", (x).shape)
print("查看数组的维度", (x).ndim)
plt.imshow(x)
plt.axis('off')
plt.show()
image = Image.fromarray(x)
# 保存为 .jpg 文件
output_file = os.path.join(output_folder, f"{os.path.splitext(file_name)[0]}.jpg")
image.save(output_file)
print(f"Saved {output_file}")
except (zipfile.BadZipFile, ValueError, IOError) as e:
print(f"Error processing file {file_path}: {e}")
# 使用示例
npz_folder = '/home/mimi/modules/txt_generation'
output_folder = '/home/mimi/dataset/FantasticReality'
npz_to_jpg(npz_folder, output_folder)
print("saved all jpg")
#print输出的结果:
查看数据类型 <class 'numpy.ndarray'>
查看数组元素数据类型 uint8
查看数组元素总数 11943936
查看数组的shape (3456, 3456, 1)
查看数组的维度 3
查看数据类型 <class 'numpy.ndarray'>
查看数组元素数据类型 uint8
查看数组元素总数 11943936
查看数组的shape (3456, 3456)
查看数组的维度 2
Saved /home/mimi/dataset/FantasticReality/IMG_0000051_IMG_0000050.jpg
saved all jpg
其中在代码中的两次 plt.show() 的图片如下:


但是最后保存的图片却是全黑的,不知道这是为什么?求解答。
