Python图像预处理:批量读取图片并转换为NumPy数组
import os
import cv2
import numpy as np
import pandas as pd
# 读取图片标签文件
file_path = 'your_image_labels.csv' # 替换为你的图片标签文件路径
imglist_file = pd.read_csv(file_path)
# 设置图片路径和批次标签
img_path = 'your_image_directory' # 替换为你的图片文件夹路径
batch_label = 'cancer images'
# 初始化变量
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)
# 删除imgs数组中的第一行空数组
imgs = imgs[1:]
# 打印最终的imgs数组和labels列表
print(imgs.shape)
print(len(labels))
这段代码展示了如何使用Python和OpenCV库对图像进行预处理。它首先读取包含图像标签信息的CSV文件,然后遍历指定文件夹中的所有图片文件。对于每一张图片,代码执行以下操作:
- 读取图片并将其缩放至统一大小 (96x96)。
- 将图片从BGR颜色空间转换为RGB颜色空间。
- 将三维图像数组转换为一维数组。
- 将一维数组添加到一个大的二维数组中,该数组存储了所有图片的数据。
- 将对应图片的标签存储在另一个列表中。
最终,代码将输出一个二维NumPy数组,其中包含了所有图片的像素值,以及一个包含所有图片标签的列表。这些数据可以用于训练图像分类模型或进行其他图像处理任务。
原文地址: https://www.cveoy.top/t/topic/f1I1 著作权归作者所有。请勿转载和采集!