根据你的文件夹结构和你提供的代码,问题是你没有在文件夹路径的末尾加上斜杠。
在提供的代码中,您试图将文件夹名称与路径直接连接起来。但是,如果您错过了斜杠,或者文件夹变量不包括尾部斜杠,这可能会导致路径不正确。
如下更新路径:
trainDataset = 'melanoma_cancer_dataset/train/'
testDataset = 'melanoma_cancer_dataset/test/'
predictionDataset = 'melanoma_cancer_dataset/skinTest/'
您的代码正在执行的操作如下:
for folder in os.listdir(trainDataset):
data = gb.glob(pathname=str(trainDataset + folder + '/*.jpg'))
它将转到trainDataset的路径,然后使用列出那里的文件夹(分别命名为恶性和良性)
os.listdir()
.
这些路径被连接以生成具有以下内容的最终图像路径:
data = gb.glob(pathname=str(trainDataset + folder + '/*.jpg'))
此外,行中有轻微语法错误:
imageList = cv2.resize(image(120,120))
应该是
cv2.resize(image, (120, 120))
此外,附加到training_List的方式可能是错误的。在追加之前需要将imageList转换为列表,或者如果要保留图像数组结构,则直接追加imageList。
完整更新代码:
# Data processing modules
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import cv2
# File directory modules
import glob as gb
import os
# Training and testing (machine learning) modules
import tensorflow as tf
import keras
# Directories
trainDataset = 'melanoma_cancer_dataset/train/'
testDataset = 'melanoma_cancer_dataset/test/'
predictionDataset = 'melanoma_cancer_dataset/skinTest/'
# Empty list for the images
training_List = []
testing_list = []
# Classification dictionary
diction = {'benign': 0, 'malignant': 1}
# Read through the folder's contents
for folder in os.listdir(trainDataset):
# Corrected the path pattern and added a slash
data = gb.glob(pathname=str(trainDataset + folder + '/*.jpg'))
print(f'{len(data)} in folder {folder}')
# Read the images, resize them, and store them in the list
for file_path in data:
image = cv2.imread(file_path)
# Corrected the resize function call
imageList = cv2.resize(image, (120, 120))
# Append the image array directly
training_List.append(imageList)
print(f'Total images in training set: {len(training_List)}')