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文件,可以方便地在训练模型时加载和使用数据。

使用OpenCV和Pickle将图像数据集转换为Python Pickle文件

原文地址: https://www.cveoy.top/t/topic/f1Jd 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录