Python 使用 OpenCV 将图像转换为一维数组并存储标签
这段代码主要用于将一个文件夹中的所有图像转换为一维数组,并存储在一个 NumPy 数组中,同时将每个图像的标签存储在一个列表中。
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)
代码解释:
-
读取标签文件:
imglist_file = pd.read_csv(file_path)使用 pandas 库读取一个 CSV 文件,该文件包含图像的标签信息,文件路径存储在变量file_path中。
-
遍历图像文件夹:
for i in os.listdir(img_path):使用os.listdir()函数遍历指定文件夹 (img_path) 中的所有文件。
-
读取图像并调整大小:
path = os.path.join(img_path, i)获取当前图像文件的完整路径。img = cv2.imread(path)使用 OpenCV 库的imread()函数读取图像。img = cv2.resize(img, (96, 96))将图像调整为 96x96 像素大小。
-
拆分颜色通道并转换为一维数组:
b, g, r = cv2.split(img)将图像的三个颜色通道 (蓝色、绿色、红色) 分开。img_array = np.concatenate((r, g, b), axis=0)将三个通道的数组连接成一个一维数组。array1 = img_array.flatten()将一维数组扁平化。
-
存储图像数据和标签:
imgs = np.vstack([imgs,array1])将处理后的图像数组添加到 NumPy 数组imgs中。labels.append(imglist_file['label'][num])从 CSV 文件中获取对应图像的标签并添加到labels列表中。
总结:
这段代码完成了将一个文件夹中的所有图像转换为一维数组并存储在一个 NumPy 数组中,同时记录每个图像的标签,为后续的图像处理任务做准备。
原文地址: https://www.cveoy.top/t/topic/f1I9 著作权归作者所有。请勿转载和采集!