Windows+Conda环境下FiftyOne导入图片目录后数据集为空求助
FiftyOne导入图片目录为空的解决办法
问题根源
- 路径转义错误:Windows路径中的
\在Python字符串里是转义符,\s会被解析为空格,导致实际路径与预期不符。 - 相对路径指向错误:脚本执行时当前工作目录为
C:\Windows,相对路径\sandbox\images无法定位到目标文件夹。
解决步骤
1. 修正路径写法
优先使用绝对路径,并通过原始字符串或双反斜杠避免转义问题:
# 原始字符串写法(推荐) DATASET_PATH = r"C:\sandbox\images" # 或者双反斜杠写法 DATASET_PATH = "C:\\sandbox\\images"
2. 验证目录与文件
在脚本中添加验证逻辑,确认路径有效性和目录内容:
import os # 检查路径是否存在 print(os.path.exists(DATASET_PATH)) # 打印目录内的文件列表 print(os.listdir(DATASET_PATH))
如果返回False或空列表,说明路径错误或目标目录内无文件。
3. 显式指定图片扩展名(可选)
若目录内混有其他格式文件,可强制仅加载.jpg文件:
dataset = fo.Dataset.from_dir( path=DATASET_PATH, dataset_type=fo.types.ImageDirectory, extensions=[".jpg"] )
修改后的完整脚本
import fiftyone as fo import os # 使用绝对原始路径 DATASET_PATH = r"C:\sandbox\images" def load_dataset(path=DATASET_PATH, dataset_type=fo.types.ImageDirectory): # 先验证路径有效性 if not os.path.exists(path): print(f"路径不存在: {path}") return None print(f"目录内文件: {os.listdir(path)}") dataset = fo.Dataset.from_dir( path=path, dataset_type=dataset_type, extensions=[".jpg"] ) print(dataset) return dataset def main(): dataset = load_dataset() if dataset is not None: session = fo.launch_app(dataset, desktop=True) session.wait() if __name__ == "__main__": main()
内容的提问来源于stack exchange,提问作者Benoît Boidin
相关产品推荐
相关产品推荐

