图像数据预处理与保存:将图像转换为NumPy数组并保存到Pickle文件
img_path = 'dataul/testul/test'
img_path2 = 'dataul/testul.pickle'
file_path = 'dataul/csvul/test.csv'
imglist_file = pd.read_csv(file_path)
batch_label = 'cancer images'
# nrows = len(imglist_file)
index = 0
k = 1
labels = []
filename_list = []
num = 0
imgs = np.empty(27648,)
for i in os.listdir(img_path):
path = os.path.join(img_path, i)
img = cv2.imread(path)
img = cv2.resize(img, (96, 96))
img = np.array(img)
#cv2.imshow('IMREAD_COLOR+Color', img)
#cv2.waitKey()
b, g, r = cv2.split(img)
img_array = np.concatenate((r, g, b), axis=0)
array1 = img_array.flatten()
#print(array1)
print(array1.shape)
imgs = np.vstack([imgs,array1])
labels.append(imglist_file['label'][num])
# labels.append(imglist_file['label2'][num])
num = num +1
print(num)
# filename_list.append(i[:-4] + '.png')
# for j in range(k, nrows):
# if imglist_file['id'][j] == i:
# labels.append(imglist_file['label'][j])
# k = j
imgs = np.delete(imgs, 0, axis=0)
print(labels)
print(len(labels))
print(imgs)
print(imgs.shape)
#print(imgs.shape)
#print(filename_list)
##Save data to file
d_decoded = {}
with open(img_path2, 'wb+') as f:
d_decoded[b'batch_label'] = batch_label
d_decoded[b'labels'] = labels
d_decoded[b'data'] = imgs
d_decoded[b'filenames'] = filename_list
pickle.dump(d_decoded, f)
#print(d_decoded)
该代码主要功能是将指定文件夹中的图像数据读取并转换为NumPy数组格式,并将其与标签信息一起保存到Pickle文件中。
首先,通过读取CSV文件中的标签信息,获取每个图像对应的标签。然后,通过遍历指定文件夹中的图像文件,将图像读取并缩放到96x96像素大小,然后将其转换为NumPy数组格式,并将R、G、B三个通道的像素值按照顺序合并成一个一维数组。最后,将所有图像的数组按行堆叠成一个矩阵,将标签信息保存到列表中。
最后,将所有数据保存到Pickle文件中,其中包括batch_label、labels、data和filenames四个数据项。其中,batch_label为数据集标签,labels为所有图像对应的标签,data为所有图像的像素值矩阵,filenames为所有图像的文件名列表。
原文地址: https://www.cveoy.top/t/topic/f1KB 著作权归作者所有。请勿转载和采集!