使用 pandas (+pyTorch,scikit) 读取图像时出错
Error reading images with pandas (+pyTorch,scikit)
我正在尝试读取图像以使用 CNN,但在尝试加载图像时出现 pandas 错误。
这是一些代码(为清晰起见,省略了导入和不相关的 nn class):
file_name = "annotation.csv"
image_files = pd.read_csv(file_name)
class SimpsonsDataset(Dataset):
def __init__(self, csv_file, root_dir, transform=None):
self.image_file = pd.read_csv(csv_file)
self.root_dir = root_dir
self.transform = transform
def __len__(self):
return len(self.image_file)
def __getitem__(self, idx):
img_name = os.path.join(self.root_dir, self.image_file.iloc[idx,0][1:])
image = io.imread(img_name)
sample = {'image': image}
if self.transform:
sample = self.transform(sample)
return sample
simpsons = SimpsonsDataset(csv_file=image_files,root_dir="folder/")
我使用iloc[idx,0][1:]
格式化文件路径,文件路径被加入,文件夹和文件名匹配。
但是,当我尝试 运行 文件时,出现以下错误:
File "C:\ProgramData\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 710, in runfile
execfile(filename, namespace)
File "C:\ProgramData\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 101, in execfile
exec(compile(f.read(), filename, 'exec'), namespace)
File "C:/.../image_extractor.py", line 41, in <module>
simpsons = SimpsonsDataset(csv_file=image_files,root_dir="folder/")
File "C:/.../image_extractor.py", line 26, in __init__
self.image_file = pd.read_csv(csv_file)
File "C:\ProgramData\Anaconda3\lib\site-packages\pandas\io\parsers.py", line 655, in parser_f
return _read(filepath_or_buffer, kwds)
File "C:\ProgramData\Anaconda3\lib\site-packages\pandas\io\parsers.py", line 392, in _read
filepath_or_buffer, encoding, compression)
File "C:\ProgramData\Anaconda3\lib\site-packages\pandas\io\common.py", line 210, in get_filepath_or_buffer
raise ValueError(msg.format(_type=type(filepath_or_buffer)))
ValueError: Invalid file path or buffer object type: <class 'pandas.core.frame.DataFrame'>
很想知道为什么会发生这种情况。谢谢!
您的变量 image_files
是一个 pandas DataFrame,因为它包含 pd.read_csv()
的 return 值,return 是一个 DataFrame。尝试删除行
image_files = pd.read_csv(file_name)
并将最后一行更改为:
simpsons = SimpsonsDataset(csv_file=file_name, root_dir="folder/")
我正在尝试读取图像以使用 CNN,但在尝试加载图像时出现 pandas 错误。 这是一些代码(为清晰起见,省略了导入和不相关的 nn class):
file_name = "annotation.csv"
image_files = pd.read_csv(file_name)
class SimpsonsDataset(Dataset):
def __init__(self, csv_file, root_dir, transform=None):
self.image_file = pd.read_csv(csv_file)
self.root_dir = root_dir
self.transform = transform
def __len__(self):
return len(self.image_file)
def __getitem__(self, idx):
img_name = os.path.join(self.root_dir, self.image_file.iloc[idx,0][1:])
image = io.imread(img_name)
sample = {'image': image}
if self.transform:
sample = self.transform(sample)
return sample
simpsons = SimpsonsDataset(csv_file=image_files,root_dir="folder/")
我使用iloc[idx,0][1:]
格式化文件路径,文件路径被加入,文件夹和文件名匹配。
但是,当我尝试 运行 文件时,出现以下错误:
File "C:\ProgramData\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 710, in runfile
execfile(filename, namespace)
File "C:\ProgramData\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 101, in execfile
exec(compile(f.read(), filename, 'exec'), namespace)
File "C:/.../image_extractor.py", line 41, in <module>
simpsons = SimpsonsDataset(csv_file=image_files,root_dir="folder/")
File "C:/.../image_extractor.py", line 26, in __init__
self.image_file = pd.read_csv(csv_file)
File "C:\ProgramData\Anaconda3\lib\site-packages\pandas\io\parsers.py", line 655, in parser_f
return _read(filepath_or_buffer, kwds)
File "C:\ProgramData\Anaconda3\lib\site-packages\pandas\io\parsers.py", line 392, in _read
filepath_or_buffer, encoding, compression)
File "C:\ProgramData\Anaconda3\lib\site-packages\pandas\io\common.py", line 210, in get_filepath_or_buffer
raise ValueError(msg.format(_type=type(filepath_or_buffer)))
ValueError: Invalid file path or buffer object type: <class 'pandas.core.frame.DataFrame'>
很想知道为什么会发生这种情况。谢谢!
您的变量 image_files
是一个 pandas DataFrame,因为它包含 pd.read_csv()
的 return 值,return 是一个 DataFrame。尝试删除行
image_files = pd.read_csv(file_name)
并将最后一行更改为:
simpsons = SimpsonsDataset(csv_file=file_name, root_dir="folder/")