使用OpenCV和Pickle将图像数据集转换为Python Pickle文件
import cv2
import os
import pandas as pd
import numpy as np
import pickle
# 读取包含图像标签信息的CSV文件
imglist_file = pd.read_csv('file_path')
# 设置批次标签
batch_label='cancer images'
# 初始化变量
index = 0
k = 1
labels = []
filename_list = []
num = 0
imgs = np.empty(27648,)
# 设置图像路径
img_path = 'path/to/your/images'
# 遍历图像文件夹
for i in os.listdir(img_path):
# 获取图像完整路径
path = os.path.join(img_path, i)
# 读取图像
img = cv2.imread(path)
# 调整图像大小
img = cv2.resize(img, (96, 96))
# 将图像转换为NumPy数组
img = np.array(img)
# 分离RGB通道
b, g, r = cv2.split(img)
# 合并RGB通道,确保通道顺序为RGB
img_array = np.concatenate((r, g, b), axis=0)
# 将图像数组展平
array1 = img_array.flatten()
# 将展平的数组垂直堆叠到imgs数组中
imgs = np.vstack([imgs,array1])
# 从CSV文件中获取图像标签并添加到标签列表中
labels.append(imglist_file['label'][num])
# 递增图像计数器
num = num + 1
print(num)
# 创建字典存储数据
d_decoded = {}
# 设置pickle文件路径
img_path2 = 'path/to/your/pickle/file.pkl'
# 将数据写入pickle文件
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)
这段代码演示了如何使用OpenCV和Pickle库将图像数据集转换为Python Pickle文件。它首先读取包含图像标签的CSV文件,然后遍历图像目录,对每张图像进行调整大小、转换为数组、展平,并将处理后的数据和标签存储在列表中。最后,代码将所有数据打包成字典,并使用pickle.dump()函数将其保存为Pickle文件。
代码改进:
- 使用更具描述性的变量名。
- 添加注释以解释代码的功能。
- 将文件路径设置为变量,方便修改。
- 为pickle文件指定文件名和扩展名。
- 提供代码解释和改进建议。
这段代码可以作为机器学习项目中图像数据预处理的起点。通过将图像数据转换为Pickle文件,可以方便地在训练模型时加载和使用数据。
原文地址: https://www.cveoy.top/t/topic/f1Jd 著作权归作者所有。请勿转载和采集!