You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

读取文本文件中图片路径时触发AttributeError问题求助

问题排查与修复方案

从你的代码和报错情况来看,最可能的原因是读取的图片路径包含换行符,导致cv2.imread返回None,后续对这个None对象操作时触发了AttributeError。下面详细拆解问题并给出修复方案:

核心问题点

  • f.readlines()会保留每行末尾的换行符\n,比如你的文件里写的是D:\xxx\img.jpg,读出来的image_path实际是D:\xxx\img.jpg\n,这种无效路径会让cv2.imread返回None
  • 你后续对image(此时是None)执行操作(比如旋转90度的代码被截断了),自然会触发AttributeError,因为None没有对应的属性/方法
  • 另外代码里创建输出目录时用了相对路径images_90t,但你定义了path_out变量,这里路径不统一,可能导致目录创建到错误位置

修复后的完整代码

import os
import cv2

PATH_IN = 'D:\\user\\data\\Augmentation'
path_out = 'D:\\user\\data\\Augmentation\\images_90t'

# 统一用绝对路径创建输出目录
try:
    if not os.path.exists(path_out):
        os.makedirs(path_out)
except OSError as e:
    print(f'Error: Creating directory of data - {e}')

# 读取文件列表并处理图片
with open('filelist.txt', 'r') as f:
    for image_path in f.readlines():
        # 去掉换行符和前后空白字符
        image_path = image_path.strip()
        # 跳过空行
        if not image_path:
            continue
        # 验证路径是否存在
        if not os.path.exists(image_path):
            print(f'Warning: Path does not exist - {image_path}')
            continue
        # 读取图片
        image = cv2.imread(image_path, 1)
        # 检查是否读取成功
        if image is None:
            print(f'Warning: Failed to read image - {image_path}')
            continue
        
        # 这里补充你原本要执行的操作(比如旋转90度)
        # 示例:顺时针旋转90度
        rotated_image = cv2.rotate(image, cv2.ROTATE_90_CLOCKWISE)
        # 生成输出路径(假设用原文件名保存)
        filename = os.path.basename(image_path)
        output_path = os.path.join(path_out, filename)
        # 保存图片
        cv2.imwrite(output_path, rotated_image)
        print(f'Processed and saved: {output_path}')

关键修复说明

  1. 清理路径字符:用image_path.strip()移除每行的换行符、空格等空白字符,确保路径有效
  2. 路径有效性校验:增加os.path.exists检查,提前过滤无效路径并给出提示
  3. 检查读取结果:判断image是否为None,避免对空对象执行操作
  4. 统一输出路径:直接使用定义好的path_out变量创建目录和保存图片,避免路径混乱

内容的提问来源于stack exchange,提问作者bit_scientist

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:30:21