由于我们需要的image和label必需一一对应所以在制作npz文件中务必也要一一对应由几位博主写的教程中是默认image和label名字是一样的,但是有一个大问题在于说你的数据集很有可能是两个名字不一样,一但不一样就很可能导致找不到label,从而出现ValueError的错误,本人也是小白在跳了几次坑后终于找到了原因。如下图所示:
import os
import cv2
import glob
import numpy as np
def npz():
#图像路径
path = r'/home/user01/Downloads/images'
path1 = r'/home/user01/Downloads/labels'
#项目中存放训练所用的npz文件路径
path2 = r'/home/user01/Downloads/TransUNet-main/data/Synapse/train_npz//'
i=0;
for img_path in os.listdir(path):
#读入图像
image = cv2.imread(path+'/'+img_path)
image = cv2.cvtColor(image,cv2.COLOR_BGR2RGB)
#读入标签
label_path = path1+'/'+img_path.split('.')[0]+"_pseudo"+'.png'
#label_path=label_path[0].split('.')+"_pseudo"+'.png'
label = cv2.imread(label_path,flags=0)
#保存npz
np.savez(path2+str(i),image=image,label=label)
print('------------',i)
i+=1
print('ok')
if __name__ == '__main__':
npz()