Python图像处理:使用OpenCV和Pickle保存和加载图像数据集
Python图像处理:使用OpenCV和Pickle保存和加载图像数据集
本教程将演示如何使用Python、OpenCV和Pickle库处理图像数据,并将其保存为Pickle文件以供以后使用。
步骤1:导入必要的库
import os
import cv2
import numpy as np
import pandas as pd
import pickle
import matplotlib.pyplot as plt
步骤2:设置路径和变量
img_path = 'dataul/testul/test' # 图像文件夹路径
img_path2 = 'dataul/testul.pickle' # Pickle文件保存路径
file_path = 'dataul/csvul/test.csv' # 包含标签的CSV文件路径
batch_label = 'cancer images' # 数据集标签
# 从CSV文件读取标签
imglist_file = pd.read_csv(file_path)
步骤3:读取图像、预处理和标记
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) # 将图像转换为NumPy数组
b, g, r = cv2.split(img) # 分离颜色通道
img_array = np.concatenate((r, g, b), axis=0) # 合并颜色通道
array1 = img_array.flatten() # 将图像展平为一维数组
imgs = np.vstack([imgs,array1]) # 将图像数据添加到数组中
labels.append(imglist_file['label'][num]) # 从CSV文件读取并添加标签
num = num + 1
print(num) # 打印处理的图像数量
imgs = np.delete(imgs,0,axis=0) # 删除第一个空行
print(labels) # 打印标签列表
print(len(labels)) # 打印标签数量
print(imgs) # 打印图像数据
print(imgs.shape) # 打印图像数据形状
步骤4:将数据保存到Pickle文件
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) # 将数据保存到Pickle文件
步骤5:从Pickle文件加载数据并显示图像
with open(img_path2, 'rb') as f:
model = pickle.load(f, encoding='bytes') # 从Pickle文件加载数据
imges_batch = np.array(model[b'data']) # 获取图像数据
images = imges_batch.reshape([-1, 3, 96, 96]) # 将图像数据重塑为原始形状
imgs = images[0, :, :, :].reshape([3, 96, 96]) # 选择第一个图像
img = np.stack((imgs[0, :, :], imgs[1, :, :], imgs[2, :, :]), 2) # 调整颜色通道顺序
plt.imshow(img) # 显示图像
plt.show()
本教程介绍了如何使用Python、OpenCV和Pickle处理图像数据,并将其保存为Pickle文件以供以后使用。您可以根据您的需要修改代码以适应不同的图像数据集和预处理步骤。
原文地址: https://www.cveoy.top/t/topic/f1KO 著作权归作者所有。请勿转载和采集!